帖子内容
我做实验时常遇到这个需求:在对数意义下均匀地测试一个变量的一系列取值,例如每秒 10 个请求、100 个请求、1000 个请求时系统性能,或是 4KiB、8KiB、16KiB 等不同数据量的处理性能。 每次乘以 10 或乘以 2 都比较简单,但是如果希望乘以更小的数,还希望序列中的数字有效位数较少,对人来说看起来方便,就有点难了。例如每次简单地乘以 1.1 会得到 1.21、1.331、1.4641、1.61051。 于是我常在实验脚本中手写:[10, 13, 17, 20, 25, 30, 40, 50, 60, 80, 100, 130, 170, …],相对来说比较好读,对数意义下切分也比较均匀。(不需要完美均匀,只是越不均匀的话实验效率越低,会有一些区间实验太多,另一些区间实验不足。) 今天才知道这个问题叫 https://en.wikipedia.org/wiki/Preferred_number ,一些例子: 1-2-5:1, 2, 5, 10 R5:10, 16, 25, 40, 63, 100 R10:100, 125, 160, 200, 250, 315, 400, 500, 630, 800, 1000 E3:10, 22, 47, 100 E6:10, 15, 22, 33, 47, 68, 100 E12:10, 12, 15, 18, 22, 27, 33, 39, 47, 56, 68, 82, 100 E24:10, 11, 12, 13, 15, 16, 18, 20, 22, 24, 27, 30, 33, 36, 39, 43, 47, 51, 56, 62, 68, 75, 82, 91, 100 E 系列的数还有一个好处,E6、E12、E24 分别近似每步加 50%、20%、10%,步长比较“整”。