5

特定のシードに対して同じ乱数セットを生成できるようにするために、疑似乱数生成を使用する必要がある開発の問題を調査しています。私は現在、このためにlong random(void)andvoid srandom(unsigned seed)を使用することを検討してきました ( man ページ)。現在、これらは Mac アプリ、iOS アプリ、および iOS アプリ (64 ビット) で同じ乱数のセットを生成しています。iOS のテストはシミュレーターでのみ行われたため、これが結果に影響するかどうかはわかりません。

私の主な懸念は、このアルゴリズムがある時点で変更される可能性があり、開発中のアプリケーションが古いデータでは実質的に役に立たなくなることです。これらのアルゴリズムが変更されたり、将来のデバイスで異なる可能性はありますか?

4

3 に答える 3

6

シーケンスはどの標準でも保証されていないため、変更される可能性が非常に高いと思います。

独自の乱数列を使用してみませんか? 単純な線形合同ジェネレーターでさえ、ランダム性のほとんどの統計的特性を満たします。このようなジェネレータの式は次のとおりです。

next_number = (a * current_number + b) % c

a = 1103515245
b = 12345
c = 4294967296

これらの a、b、c の値は、優れた統計的特性を提供し、迅速でダーティなジェネレーターを構築することでよく知られています。

于 2013-09-25T07:55:07.593 に答える
0

実際、このブログ投稿srandomによると、Mac OS X 10.7 以降に変更がありました。ただし、これは実装方法によるものでした。C では未定義の動作である初期化されていないローカル変数にアクセスしようとしました。投稿によると、Mac OS X 10.7 以降に使用された新しいコンパイラは、初期化されていないメモリ アクセスを最適化し、その変更を加えました。微妙な方法での動作。srandom

于 2013-10-06T17:25:24.370 に答える