7

次のようなもの:

1234.5678
2345.6789
3456.7890

だがしかし:

123.4567

今、私はこれを行います:

double number = Math.Ceiling ( random.NextDouble ( ) * 10000000 ) * 0.001;

しかし、それは常に私に 8 桁を与えるとは限りません。

これを行うための巧妙なトリックはありますか?

4

8 に答える 8

8

試すrandom.Next(10000000, 99999999+1) / 10000.0d;

編集:さらに9を追加

EDIT2: 1 マイナスの問題を修正

EDIT3: さらに 0 を追加しました。私の回答はどのように支持されましたか?

于 2012-04-19T19:09:37.247 に答える
3

次のいずれかを使用します。

double number = Math.Ceiling(random.NextDouble() * 9000 * 10000 + 1000 * 10000) * 0.0001;
double number = Math.Ceiling(random.NextDouble() * 90000000 + 10000000) * 0.0001;
double number = random.Next(10000 * 10000 / 10, 10000 * 10000) / 10000d;
double number = random.Next(10000000, 100000000) / 10000d;
于 2012-04-19T19:09:03.783 に答える
2

このようなもの?

Random r = new Random();
var item = r.Next(10000000, 100000000) * 0.0001m;

以下の消費者のコメントごとに...ここで10進数を使用する理由についての説明:

  1. Jon Skeet は、オハイオ州の Codemash で開催された講演の 1 つで、double を選択した私たちの多くを公然と恥じました。
  2. ダブルスはヒップスターによって使用され、
  3. Decimal は、double の使用によって生じる精度の問題を防ぎます。ドットの後に多くの数字が必要な場合は、double を使用する必要があることに注意してください。より少なくても精度を維持する必要がある場合は、10 進数を使用します。
于 2012-04-19T19:11:52.473 に答える
1

8 つの単一の乱数を生成し、それらを連結します。

于 2012-04-19T19:08:31.150 に答える
1
double number = random.Next(1000 * 1000, 1000 * 1000 * 10) / 1000.0
于 2012-04-19T19:09:07.513 に答える
1
Random rnd = new Random();
int num1 = rnd.Next(1000,9999);
int num2 = rnd.Next(1000,9999);
Console.WriteLine(num1.ToString()+"."+num2.ToString());
于 2012-04-19T19:14:12.607 に答える
1
double rndNumber = new Random().NextDouble(); 
string testNumber = (rndNumber * 99999999).ToString("0000.0000"); 
于 2012-04-19T19:10:37.547 に答える
0
double number = Double.Parse(r.Next(10000000, 99999999).ToString().Insert(4,"."));
于 2012-04-19T19:13:55.650 に答える