10

私が C で書いているプログラムには、適切な乱数ジェネレーターが必要です。興味があれば、これはフラクタル フレーム ジェネレーターです。過去に同じアルゴリズムで成功したにもかかわらず、私の画像は非常に粗いものになっていました。私が最終的に気づいた違いは、使用していた乱数発生器でした。信じられないことに、それは大きな違いをもたらします。さらに優れた乱数ジェネレーターでより良い結果が得られることを願っています。答えは、コード サンプルまたは既存の乱数ライブラリへのリンクの形で得られる可能性があります。最も重要な要件:

  • 乱数の比較的高品質のストリームを生成する必要があります
  • その期間は100億以上でなければなりません
  • 十分に高速で、パフォーマンスのトレードオフが良好である必要があります。
4

2 に答える 2

13

これは、メルセンヌツイスターの良いユースケースのようです

  • rand()のほとんどの標準的な実装よりも高速です
  • 非常に長い(2 ^ 19937 − 1)期間があります
  • それはかなり高品質です-それはほとんどの標準化されたランダム性テストに合格します
  • それはパブリックドメインです
于 2013-02-15T08:38:49.843 に答える
8

非常に高速でまともな品質のアルゴリズムを探している場合は、xorshift128+またはについて考える必要がありますxorshift1024*。LCG とほぼ同じ速度で (私の比較によると、単純なインライン LCG よりも 30% 遅いだけです)、同時に LCG よりもはるかに優れた品質を備えています。

ここでコードと比較を見つけることができます: http://xorshift.di.unimi.it/

于 2014-09-13T03:10:20.700 に答える