我的查询是关于使用numpy.random.uniformon生成统一随机数生成器的[0,1)。此实现是否涉及统一的step-size,即可能性的宇宙在{0,a,2a,...,Na}哪里(N+1)a = 1且a是恒定的?如果以上是正确的话,那么这有什么价值step-size?我注意到的价值numpy.nextafter(x,y)不断变化,取决于x。因此,我的问题关于统一是否step-size被用来实现numpy.random.uniform。如果step-size不一致,那么找出可能需要的唯一值数量的最佳方法是numpy.random.uniform(low=0, high=1)什么?的重复周期是numpy.random.uniform多少?即在经过几个样本后,我将再次看到我的原始编号吗?为了获得最大效率,该值应等于唯一值的数量。
1 回答

子衿沉夜
TA贡献1828条经验 获得超3个赞
相关功能是
double
rk_double(rk_state *state)
{
/* shifts : 67108864 = 0x4000000, 9007199254740992 = 0x20000000000000 */
long a = rk_random(state) >> 5, b = rk_random(state) >> 6;
return (a * 67108864.0 + b) / 9007199254740992.0;
}
可以在numpy源代码树内的randomkit.c中找到。如您所见,粒度1 / 9007199254740992.0等于2 ^ -53,即(向下)float64分辨率为1。
>>> 1 / 9007199254740992.0
1.1102230246251565e-16
>>> 2**-53
1.1102230246251565e-16
>>> 1-np.nextafter(1.0, 0)
1.1102230246251565e-16
添加回答
举报
0/150
提交
取消