numpy randint 和 floor of rand 之间的区别

difference between numpy randint and floor of rand

num_draws = int(1e6)
arr1 = np.random.randint(0, 10, num_draws)
arr2 = np.floor(10*np.random.rand(num_draws))

有 numpy.random 内部专业知识的人可以评论 arr2 是否遵循与 arr1 形式上等效的统计信息?在我所做的实验中,分布似乎具有相同的前几个时刻,但这就是我到目前为止所检查的全部内容。

是的,它们是等价的 [1]

查看源码,都是在辅助函数中定义的(1,2) that reference underlying C calls based on the data size (1, 2)- these both make a call to the same underlying function.

该底层函数是 32 位 Mersenne Twister。此调用之上的所有内容都是移位和屏蔽以强制转换为正确的数据类型,但它不会改变随机性的基本行为。


脚注

[1] 我假设您不是在问您计算底数的方法是否有意想不到的统计副作用。这不依赖于 numpy,但由于它们都使用相同的统一统计设备,因此它们应该具有相同的偏差。我不希望他们有相同的表现