そのため、srand() によって生成された数値に基づいて結果を計算する C コードがいくつかあります。同じシード番号を使用すると、結果は常に同じになります。
これで、JNI 経由でこれらの C コードを Android アプリにロードできるようになりました。ただし、同じシード番号を使用しても結果は異なります。シード番号が同じであることを再確認しました。しかし、Android プログラムとネイティブ コードはどちらもかなり複雑であるため、この問題の原因を突き止めるのに苦労しています。
私が確信しているのは、乱数を生成するために Java プログラムで関数を使用していないことです。したがって、おそらく srand() は毎回異なるシード番号で呼び出されるわけではありません。Java または C の他の関数は、srand() によって生成された乱数を変更できますか?
ありがとう!
更新: 私の質問は少し混乱したと思います。明確にするために、比較している結果は同じプラットフォームからのものですが、異なる実行です。C コードは rand() を使用して数値を取得し、それに基づいて結果を計算します。したがって、srand() のシード番号が常に同じである場合、rand() によって取得される数は同じである必要があり、したがって結果も同じになるはずです。しかし、どういうわけか、srand() に同じシードを使用しても、rand() は別の番号を与えてくれます...それについて何か考えはありますか?