線形合同法を使用して、Matlabで以下の質問を解決しようとしています。この関数のコード行を以下に示します。m
基本的には、期待できる値の範囲の最大値であるため、質問によって異なります。最初のシードx
は最初にクロックによって決定され、次に各乱数が関数にフィードバックされて新しいものが生成されます。lcg値を選択するためのルールは、ここhttp://en.wikipedia.org/wiki/Linear_congruential_generatorに記載されています。私が必要としているのは、指定された期間の適切な値a
ですc
。
私のlcgコード
random_number = mod((a*x + c),m);
- Q1には1から52までの乱数が必要です(ポーカーハンドの確率)
- Q2には1から366までの乱数が必要です(誕生日のパラドックス)
- Q3には1から3までの乱数が必要です(モンティホール問題)
- Q4には1から1000までの数字が必要です
かなり単純に見えるかもしれませんが、これを狭い範囲で実装すると、短いピリオド、つまり4桁の数字が連続して繰り返されるパターンが生成される傾向があります。
また、別の値を使用して、必要な範囲外の値を除外することも可能かもしれm
ませんが、正直なところ、それは必要ではないと思います。どうもありがとう