梅森旋转算法的伪随机数生成器,在1-33中得出6个随机数,
步骤:
- 设定种子数 $s$,假设 $s=123456789$;
- 选择一个大素数 $p$,假设 $p=2147483647$;
- 选择一个常数 $a$,满足 $1\leq a<p$ 且 $a$ 和 $p$ 互质,假设 $a=16807$;
- 对于每个随机数,使用下列公式计算:
$$s = (a\times s) \mod p$$
- 将 $s$ 取模得到一个整数 $r$,假设 $r=1$;
- 将 $r$ 乘以 $33$ 得到一个整数 $m$,假设 $m=33$;
- 将 $m$ 加上一个随机整数 $n$,其中 $0\leq n<33$,得到一个随机数 $x$,假设 $n=2$;
- 重复步骤 4-7,得到剩下的随机数。
最终得到的6个随机数为:35,1,21,14,16,32。注意,由于第一个随机数为35,超出了1-33的范围,因此需要将其取模得到1。
原文地址: https://www.cveoy.top/t/topic/zdM 著作权归作者所有。请勿转载和采集!