私は現在、C++ および C# で記述された (レガシー) プログラムに取り組んでいます。いくつかの重い計算を実行しますが、完全に決定論的である必要があります。つまり、同じ入力でも同じ出力が得られます... 問題は、(同じコンピューター上で、同じコンパイル済み実行可能ファイルを使用して) 2 回実行すると、わずかに異なる出力が生成されることです。
アプリケーションは、SQL サーバー データベースに対して読み取りと書き込みを行います (DB への一意のアクセス権があるため、DB の値に干渉するものは他にありません)。
実行間の唯一の明らかな違いは、それぞれに一意の名前 (単なる文字列変数) が割り当てられていることです。
コード内にランダムなオブジェクトはなく、すべてのループは、事前に決められた反復回数、または条件が満たされるまで実行され、一定時間実行されません。少量のマルチスレッドがあります。これはスレッドセーフであると確信していますが、自分で確認します。
この逸脱した動作の原因となる、私が探すべき明らかなものは他にありますか?