如何让您的自定义rand函数在python
问题描述:
我想打一个随机数发生器如何让您的自定义rand函数在python
所以我做了很多研究,做了一个小的代码下面
a=1
b=2
m=5000
x=3
lst=[]
for i in range(10):
x=(a*x+b)%m
lst.append(x)
print(lst)
if len(lst) != len(set(lst)):
print("it has duplicates but possibly random numbers")
else:
print("those were random numbers")
的数学公式,我从拿到here它给了我一些随机数,但只有当数值很大时,如果我选择小数值(假设m = 5,保持其余值相同),我可以看到重复数字序列正在形成。
*问题*
我可以从here巨蟒看到OS得到它,它不会产生他们 因此,它是产生在python随机数的正确方法?
答
你的随机数是最正确的。问题在于你的距离发生器:
一般混合同余发生器的周期最多为m,对于因子a的某些选择远远小于此。
因此,如果您m=5
- 幅度不宜超过5
另外,还要注意,认为:
混合同余发生器将有一个完整周期的所有种子如果 值且仅当:
m
和偏移c
互质,a-1
是的m
所有质因数整除,a-1
被4整除,如果m
是整除4
来源:您
如何范围有什么在这里做提供维基文章。就像获得10个随机数字一样。 – codaholic
你不能得到比你的'm'值更多的唯一数字 –