python - 无法理解线性同余生成器的代码
问题描述
我正在制作另一个 python 脚本来执行线性同余生成器以生成 55 个伪随机数,但无法理解线性同余生成器的算法以及我的脚本如何工作,即使脚本对我来说很简单。
基于python脚本,为什么每个循环的输出都在变化?python 脚本对于线性同余生成器是否正确?
#!/usr/bin/python3
# Fix variable for the seed, modulus, a and c
seed = 8
a = 2
c = 2
m = 20
# counter for how many iterations we've run
counter = 0
#Perfom number of iterations requested by user
while counter < 50:
# Store value of each iteration
seed = (a * seed + c) % m
counter = counter + 1
解决方案
由于种子变量被更新,每次迭代的输出都会发生变化,您使用上一次迭代的种子来更改下一次迭代的种子。
seed = (a * seed + c) % m
在第一次迭代中,你的种子是 5,所以
(3 * 5 + 3) % 19
给出 18. 在第二次迭代中
(3 * 18 + 3) % 19
给出 0,因为 3*18 + 3 是 57 而 57 模数 m 是 19 是 0。所以循环继续,每个前一个种子影响下一个。
推荐阅读
- flutter - 使用 http Flutter 获取 API
- java - Android OpenGL:纹理和颜色问题
- jboss7.x - 摆脱 MANIFEST.MF 文件
- solidity - 如何查询RNS域名的到期日?
- django - Django 无法使用 pk MultiValueDictKeyError 以外的查询参数测试 API 补丁方法
- javascript - 在 Javascript 中设置交通灯的计时器
- r - Plotly:使用 R 更新参数中的多个数据属性
- kubernetes - 确定 pod 是否应该连接到 KeyManager1 或 KeyManager2
- android - 我如何测试是否没有互联网和其他网络场景
- view - 不能在雪花中工作 - “IFF”声明