-2

特定のシミュレーションを実行しようとしています。いくつかのコードを実装しましたが、結果は期待したものではありません。小数点以下 10 桁のランダムな一様 (0 から 1 の範囲) の数値を生成する必要があります (他のディストリビューションの場合)。例: 0,0345637897、0,3445627876、0,9776428487

これはコードです:

double next = r.Next(1000000000, 9999999999);
return double.Parse(String.Format("0.{0}", next));
4

3 に答える 3

3

これで十分です:

double v = Math.Round(myRandom.NextDouble(), 10);

0.123 との違い0.1230000000はフォーマットの問題です。@SamIAm からの回答を参照してください。


編集後:

double next = r.Next(1000000000, 9999999999);
return double.Parse(String.Format("0.{0}", next));

これは、1000000000 から 9999999999 までの整数を取得し、デフォルトのカルチャを使用して double (0 ~ 1.0 の範囲) に変換します。

コンマ(,)を小数点として使用しているようなので、少なくとも使用してください

return double.Parse(String.Format("0.{0}", next), CultureInfo.Invariant);
于 2013-05-09T20:51:18.000 に答える
0

出力をパディングしようとしていますか? あなたはそれを行うことができるのでString.Format()

string s = String.Format({0:0000000000}, i);

double または float で行うこともできます

string s = String.Format("{0:0.0000000000}", d);

ランダムな double が必要な場合は、1 つ作成し、印刷時に小数点以下 10 桁で埋めてください。

Random random = new Random();
double d = random.NextDouble()
于 2013-05-09T20:44:19.277 に答える
-1

RNGCryptoServiceProvider を使用することをお勧めします。高品質の乱数を生成します

この投稿を参照してください:なぜ System.Security.Cryptography.RandomNumberGenerator の代わりに C# クラス System.Random を使用するのですか?

于 2013-05-09T20:46:46.837 に答える