python-3.x - 诺依曼发电机计数
问题描述
list1=[8096, 5368, 3416 ,8963, 751, 6239 ,886, 3488, 2519, 1855, 2026 ,1461, 4587]
for num in list1:
random=pow(num,2)
count=0
equal=0
while True:
random = (random // 100) % 10000
count+=1
if random==num:
break
else:
random=pow(random,2)
print(count)
它应该给出达到其实际值所需的计数,但无法获得输出
解决方案
这是实现伪随机数生成器 的中间平方方法。
“中间正方形”方法的一个问题是所有序列最终都会重复自己。正如您所发现的,您的代码可能不会因某些输入而终止。您示例中的 8096 输入最终会将您发送到 6100 -> 2100 -> 4100 -> 8100 -> 6100 循环,而无需事先再次访问 8096。
这里的无限循环不是你的代码的问题,而是底层算法的问题。
推荐阅读
- php - 无法打开流:权限被拒绝打开服务器
- r - 向量化循环,其中迭代依赖于 R 中的先前迭代
- c# - 并行启动 AddHostedService 服务
- python - 用openpyxl进行excel酸洗
- python - 如何在 Linux 上将麦克风采样率更改为 16000?
- php - 应用程序:使用 symfony 4 的 @ParamConverter 注释未找到发布对象
- wordpress - wordpress自定义帖子类型分页404第2页错误
- html - 如何使 Typo3 Fluid 产生
- reactjs - 反应太多的重新渲染
- python - 如何在 django 中将钱包与 walletconnet 连接?