📅  最后修改于: 2023-12-03 15:40:51.783000             🧑  作者: Mango
在计算机程序中,生成随机数是非常常见的需求,而真正的随机数是无法被计算机生成的。因此,通常我们需要使用伪随机数来代替真正的随机数。其中,使用乘法同余法来生成伪随机数是一种简单而常见的方法。
乘法同余法是指通过一个线性同余方程来生成伪随机数。该方程如下所示:
xn+1 = (a * xn + c) % m
其中,xn表示当前生成的随机数,xn+1表示下一个随机数,a、c和m是常数,%表示取余操作。
n+1表示下一个随机数,a、c和m是常数,%表示取余操作。
下面是使用乘法同余法生成伪随机数的Python代码示例:
import time
class Random():
def __init__(self, seed=None):
if seed is None:
# 使用当前时间戳作为默认种子
seed = int(time.time() * 1000)
self.seed = seed
self.a = 1103515245
self.c = 12345
self.m = 2 ** 32
def rand(self):
self.seed = (self.a * self.seed + self.c) % self.m
return self.seed
在该代码中,我们定义了一个Random类,其中包含了一个rand方法。该方法通过乘法同余法来生成伪随机数。其中,a、c和m分别设定为1103515245、12345和2^32。如果不手动指定种子,则使用time.time() * 1000作为默认种子。
乘法同余法是一种简单而常见的生成伪随机数的方法,该方法的生成速度比较快,并且能够产生高质量的伪随机数。使用该方法时需要选择合适的a、c和m值,并且需要避免选取重复的种子。