【发布时间】:2011-08-27 21:52:25
【问题描述】:
不知何故,我需要一个可以生成高度一致的数字的随机函数,例如,当我说 [5,5] 时,我运行这个函数 10 次,我想要 5 个小于 0.5 的数字其他5个数字都大于0.5。
每次运行都应该分开,例如:
for i in range(0,10):
rnd=random_function([6,3,1])
print rnd
运行此函数十次后,我有 6 个小于 0.6 的数字,3 个介于 0.6 和 0.9 之间的数字,以及 1 个介于 0.9 和 1 之间的数字。
有人知道我该怎么做吗?因为python里面的随机函数不是那么统一....谢谢!!
【问题讨论】:
-
即使是最好的 RNG 也不一定能满足您的需求。如果您想要某个给定范围内的数字,请使用该范围调用 RNG。均匀分布是随着生成的数字数量接近无穷大而发生的。您不能总是指望 10 个随机数的一致性。
-
这将仅在限制中是统一的;如果它总是统一的,那不会是随机的,不是吗?
-
你应该更好地解释你想要做什么。如果你想要统一性,你并不真正想要随机性。在你真的不介意结果的地方使用随机函数,提供一个范围。在第一个示例中,您需要两组不同的随机数。
-
在每 1024 次试验中,统一随机数 生成器的所有 10 个数都低于 0.5。你所要求的不是随机的。