gpt4 book ai didi

C# Random.Next 突然停止返回随机值

转载 作者:太空狗 更新时间:2023-10-29 20:44:46 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
System.Random keeps on returning the same value

我正在重构和扩展一个基于 C# 代理的小型模型,以帮助一些生物学教授预测疾病的传播。在模拟的每一年,每个代理人都会随机前往附近的人口节点,可能会传播疾病。我是 C# 的新手,但我读过 Random.Next 的潜在问题,如果使用相同的系统时间重新初始化,则返回相同的值。为了避免这种情况,我创建了一个静态实例,每个新的随机值都会引用它。

具体情况:

在我努力扩大模型的过程中,我将其更改为并行计算每个人口节点的“旅行”信息。在测试模型时,我注意到在新版本中,疾病不会传播到第一年之后。进一步的调查将问题缩小到节点之间的行程。第一年后,所有特工都保持不动。我检查了负责它们旅行的函数,发现它的工作原理是创建一个包含所有附近节点的列表,生成一个 <= 列表中元素数量的随机数,然后前往 listOfNearbyNodes[myRandomNumber]。

问题:

然后我添加了一个打印语句来输出每次迭代的随机索引值。我发现整个模型在模拟的第一年完全符合预期,生成的随机数在可接受的范围内。然而,在第一年结束并且模拟循环之后,完全相同的代码将只返回一个“随机”索引 0。每个线程、每个迭代、每个节点、每个代理始终为 0。因为代理的当前节点始终是列表中的第一项代理不再移动。

我认为这可能是系统时间种子错误的另一种表现,所以我尝试了三种不同的方法来实现静态随机对象,但都没有用。每次我运行模拟时,第一年总是正常工作,然后 Random.Next() 开始只返回 0。

有没有人知道我接下来应该在哪里寻找错误?谢谢!

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com