小编Man*_*rot的帖子

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

可能重复:
System.Random继续返回相同的值

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

具体内容:

在我扩展模型的努力中,我改变了它以并行计算每个人口节点的"旅行"信息.在测试模型时,我注意到在新版本中疾病不会在第​​一年过去.进一步的调查将问题缩小到节点之间的旅行.第一年后,所有代理人都保持不动.我检查了负责他们旅行的功能,发现它的工作原理是创建一个附近所有节点的列表,生成一个随机数<=列表中的元素数,然后前往listOfNearbyNodes [myRandomNumber].

问题:

然后我添加了一个print语句来输出每次迭代的随机索引的值.我发现整个模型在模拟的第一年完全按预期工作,随机数生成在可接受的范围内.但是,在第一年结束并且模拟循环之后,完全相同的代码将仅返回0的"随机"索引.每个线程,每个迭代,每个节点,每个代理,始终为0.因为代理的当前节点始终是列表中的第一项代理永远不会再移动.

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

有没有人有关于我应该在哪里寻找bug的想法?谢谢!

c# random return-value c#-4.0

7
推荐指数
2
解决办法
3305
查看次数

从python脚本运行C#应用程序

我刚刚用C#编写了一个体积适中的疾病传播模型.但是,我对.NET很新,不确定如何继续.目前我只需双击.exe文件,模型从文本文件导入配置设置,做到这一点,并将结果输出到文本文件中.

我接下来要做的是编写一个Python脚本来执行以下操作:

  • 运行模拟N次(N> 1000)
  • 每次运行后重命名输出文件并存储(即./output.txt - > ./acc/outputN.txt)
  • 汇总,解析和分析输出
  • 以一些干净的格式输出结果(可能是excel)

到目前为止,我的大部分编程经验都是在Linux上的C/C++中.我对最后两项很有信心; 但是,我不知道如何继续前两个.以下是一些我喜欢的具体问题:

  • 从python脚本运行C#.exe的最简单/最好的方法是什么?
  • 有没有人对在Windows系统上用Python进行文件系统操作的最佳方法提出建议?

谢谢!

python filesystems simulation subprocess

7
推荐指数
1
解决办法
6256
查看次数