步骤:

  1. 设定种子数 $s$,假设 $s=123456789$;
  2. 选择一个大素数 $p$,假设 $p=2147483647$;
  3. 选择一个常数 $a$,满足 $1\leq a<p$ 且 $a$ 和 $p$ 互质,假设 $a=16807$;
  4. 对于每个随机数,使用下列公式计算:

$$s = (a\times s) \mod p$$

  1. 将 $s$ 取模得到一个整数 $r$,假设 $r=1$;
  2. 将 $r$ 乘以 $33$ 得到一个整数 $m$,假设 $m=33$;
  3. 将 $m$ 加上一个随机整数 $n$,其中 $0\leq n<33$,得到一个随机数 $x$,假设 $n=2$;
  4. 重复步骤 4-7,得到剩下的随机数。

最终得到的6个随机数为:35,1,21,14,16,32。注意,由于第一个随机数为35,超出了1-33的范围,因此需要将其取模得到1。

梅森旋转算法的伪随机数生成器,在1-33中得出6个随机数,

原文地址: https://www.cveoy.top/t/topic/zdM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录