web-dev-qa-db-ja.com

C ++ 11での乱数生成:生成方法、動作方法

最近、C++ 11で乱数を生成する新しい方法に出会いましたが、それについて読んだ papers を消化できませんでした(それはenginedistributionなどの数学用語、「生成されるすべての整数は可能性が高い」)。

だから誰でも説明してください

  • 彼らは何ですか?
  • 彼らはどういう意味ですか?
  • 生成方法
  • 彼らはどのように機能しますか?

すべてを1つで呼び出すことができますFAQ乱数生成について。

88
user72424

乱数ジェネレーターは、数値を指定すると、新しい数値を与える方程式です。通常、最初の数字を指定するか、システム時刻などから取得します。

新しい数値を要求するたびに、以前の数値を使用して方程式が実行されます。

乱数ジェネレーターは、同じ数値を他の数値よりも頻繁に生成する傾向がある場合、あまり良いとは見なされません。つまり、1から5の間の乱数が必要で、この数分布がある場合:

  • 1:1%
  • 2:80%
  • 3:5%
  • 4:5%
  • 5:9%

2は他の番号よりも頻繁にFARで生成されるため、他の番号よりも生成される可能性が高くなります。すべての数字が同じようなものであれば、毎回20%の確率で各数字を取得できます。別の言い方をすれば、上記の分布は非常に不均一です。なぜなら、2が有利だからです。すべての20%の分布は均等です。

通常、真の乱数が必要な場合は、乱数ジェネレーターではなく、天気などの自然なソースからデータを取得します。

2
mydogisbox