我需要在组中生成随机数:100,500,1000和10000个号码的制服和高斯。这对于创建一些直方图和其他统计信息是必要的。
条件不是使用python的本机随机函数,所以我想使用这种方法(线性同余生成器):Xn+1 ≡ (aXn + c) mod m
。这里我需要4个变量。
有人可以告诉我如何实现这个算法?我假设第一次 m 变量 100
答案 0 :(得分:2)
你已经知道这是Linear congruential generator,所以很难读懂它?
一般LCG的时间段最多为m,并且对于某些选择 因素远低于此。假设偏移量c非零, 当且仅在以下情况下,LCG将对所有种子值有一个完整的期限:
1)c和m是相对素数
2)a - 1可被m
的所有素因子整除3)如果m是4的倍数,则a - 1是4的倍数。
他们甚至在下表中给出了一些这些值的例子。这足以实现一个简单的功能:
wget --mirror