c# - 确定性应用程序中的偏差

标签 c# c++ random deterministic

我目前正在开发一个用 C++ 和 C# 编写的(遗留)程序;它执行一些重量级计算,但应该是完全确定的。即相同的输入将产生相同的输出...问题是 2 次运行(在同一台计算机上,使用相同的编译可执行文件)产生略有不同的输出。

应用程序读取和写入 SQL 服务器数据库(它具有对数据库的唯一访问权限,因此不应有其他任何东西干扰数据库值)。

运行之间唯一明显的区别是它们都被分配了一个唯一的名称(只是一个字符串变量)。

代码中没有随机对象,所有循环运行预定的迭代次数或直到满足条件,它们不会运行一定的时间。有少量的多-threading,我确信它是线程安全的,但我会自己检查一下。

是否有任何其他明显的事情我应该寻找,这会导致这种异常行为?

最佳答案

我想到了两个想法:

  • 未初始化的变量。
  • 浮点运算不是关联的。

后一点会在多线程下产生机器精度水平差异。不过,它更有可能是未初始化的变量!

关于c# - 确定性应用程序中的偏差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5747072/

相关文章:

c++ - boost::phoenix::bind 和 boost::phoenix::actors 在 boost::spirit::qi 的语义操作中的问题

haskell - 简单的随机数生成

random - Mersenne Twister 是一个好的二元 RNG 吗?

c# - 除非用户第一次连接到 Sharepoint 服务器,否则将文件复制到 Sharepoint-share 失败

c# - dll 的 App.config

c# - 如何使用 Json.NET 解析没有标题的 JSON 数据

c++ - 如何让每个线程在 C++11 中使用自己的 RNG

c# - 获取错误 "System.Runtime.Versioning.TargetFrameworkAttribute from assembly ' mscorlib,版本 = 2.0.0。 0'"

C++如何创建 'bind'字符串文本替换方法?

c++ - 米斯拉警告包括守卫