C
creation-zy
Unregistered / Unconfirmed
GUEST, unregistred user!
关于效率,我认为以上的算法都可以在一个较为固定的时间内获得一定的信息熵。
比如,我在 ID=1606150 中给出的代码,不确定性的产生速度大致为 6bit/ms,即这个算
法每秒可以产生6000个完全随机的二进制数。
容易看出,计时精度越高,单位时间内我们可以得到的信息熵就越大。我在上面的程序中
使用的是QueryPerformanceCounter API获得时间滴答数,我试验了一下,在我的机器上,
QueryPerformanceCounter每秒钟增大3579545,也就是可以精确到三百多万分之一秒。如果
我们进一步采用直接获得CPU的周期数的方法,还是以我的机器为例——CPU的主频为1533MHz
——即每秒增大1533000000,与QueryPerformanceCounter相比,精度提高428倍!如果说用
QueryPerformanceCounter每秒可以获得6000bit的不确定性,那么用RDTSC指令每秒中就可以
得到6000*(Lg428/Lg2)=52448个随机二进制数!——够用了吧
比如,我在 ID=1606150 中给出的代码,不确定性的产生速度大致为 6bit/ms,即这个算
法每秒可以产生6000个完全随机的二进制数。
容易看出,计时精度越高,单位时间内我们可以得到的信息熵就越大。我在上面的程序中
使用的是QueryPerformanceCounter API获得时间滴答数,我试验了一下,在我的机器上,
QueryPerformanceCounter每秒钟增大3579545,也就是可以精确到三百多万分之一秒。如果
我们进一步采用直接获得CPU的周期数的方法,还是以我的机器为例——CPU的主频为1533MHz
——即每秒增大1533000000,与QueryPerformanceCounter相比,精度提高428倍!如果说用
QueryPerformanceCounter每秒可以获得6000bit的不确定性,那么用RDTSC指令每秒中就可以
得到6000*(Lg428/Lg2)=52448个随机二进制数!——够用了吧