2つの値の間にランダムな浮動小数点数を生成したいと思います。これをC#で行う最良の方法は何ですか?どのようにランダムダブルスについてはどのようにC#で乱数を生成しますか?
答えて
私はEricの回答に追加する唯一のことは説明です;なぜコードが動作するのかの知識は、どのコードが動作するのかを知るよりも優れています。
説明は次のとおりです。2.5から4.5までの数値を指定したいとしましょう。範囲は2.0(4.5 - 2.5)です。 NextDouble
は0と1.0の間の数値のみを返しますが、これを範囲に掛け合わせると、0との範囲の間の数値が得られます。 2.5と4.5の間でそれらを
rng.NextDouble() * 2.0
をしかし、我々はしたい:
だから、これは0.0と2.0の間で私たちにランダムダブルスを与えるだろう!これをどうやってやるの?最小の数値を追加する2.5:
2.5 + rng.NextDouble() * 2.0
ここで、0.0から2.0の間の数値を取得します。これらの値のそれぞれに2.5を追加すると、その範囲は現在2.5と4.5の間にあることがわかります。
最初は私はb> aまたはa> bのいずれかであると思っていましたが、両方の方法でそれを実行すると、変数の順序を崩さない限り、中古。私は私が混入しないように長い変数名でそれを表現したい:
double NextDouble(Random rng, double min, double max) { return min + (rng.NextDouble() * (max - min)); }
// generate a random number starting with 5 and less than 15
Random r = new Random();
int num = r.Next(5, 15);
あなたはNextDouble
System.Random r = new System.Random();
double rnd(double a, double b)
{
return a + r.NextDouble()*(b-a);
}
で次を置き換えることができますか?あなたは、単にその後、擬似ランダムに対処することができた場合:
Random randNum = new Random();
randNum. NextDouble(Min, Max);
あなたは「より良い」乱数をしたい場合、あなたはおそらくメルセンヌツイスターアルゴリズムをご覧ください。たくさんの人がいますがalready implemented itあなたのためには
ここではCryographically安全な乱数を取得する方法の抜粋です: これはcrytographically強いと8バイト単位で記入しますランダム値のシーケンス。 http://msdn.microsoft.com/en-us/magazine/cc163367.aspx NextDoubleの実装と何の説明を探します。詳細はLonghornのはそんなにdownmoddedされた理由の、について説明するために
(デッキシャッフル上CodingHorrorの記事に触発さ)How Random is your Random??"を参照してください
byte[] salt = new byte[8];
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetBytes(salt);
ランダムなダブルです。
このリンクは、暗号化乱数(Sameerのような)をビットストリームではなく実際の有用な出力でのみ使用する方法のgooの例です。
- 1. Cで範囲[0、n)の乱数を生成しますか?
- 2. 2秒ごとに乱数を生成しますか? C++ Srand
- 3. C# - フィールドに乱数を生成する
- 4. iは乱数を生成し、C#を使用してクッキーにそれを維持しようとしている乱数を生成し、C#の
- 5. C++はループなしで複数の乱数を生成する
- 6. Cで-nからnまで乱数を生成
- 7. in c#contextMenuをどのように再生成しますか?
- 8. 乱数を生成するC++ +1
- 9. C#乱数int - 謎を生成する
- 10. 乱数ジェネレータはどのようにCで動作しますか?
- 11. どのようにして各プレーヤーに異なる乱数を生成できますか?
- 12. 乱数生成器 - 毎回乱数を生成しない
- 13. どのように私は現在のシステム時間を使用してCの乱数を生成する
- 14. 目的のCで一意の乱数を生成していますか?
- 15. C/C++プリプロセッサで一連の乱数を生成する方法
- 16. C++乱数生成とPythonの違い
- 17. Cで設定した間隔で乱数を生成する
- 18. Cで一意の乱数を生成するには
- 19. MATLABで対数正規乱数を生成しますか?
- 20. C++ 1から10^6までの乱数を生成するには?
- 21. 乱数生成はどのようにして再現性を保証しますか?
- 22. 乱数onclickを生成し、生成された数値を数えますか?
- 23. Swift 3.0の配列内の各要素の乱数生成をどのように強制しますか?
- 24. 乱数生成
- 25. どのようにSQL ServerスキーマからC#でクラスを生成しますか?
- 26. C#で乱数ジェネレータを作成しようとしています。4.69
- 27. 乱数の生成
- 28. Pythonで新しい乱数を生成していますか?
- 29. Excelでの乱数生成
- 30. C#/ XNA疑似乱数生成
実際には正確ではありません。 NextDoubleは0.0と1.0の間でのみ生成します。 – Bloodyaugust
NextDouble()は、私が見ることのできる引数をとりません。 –