プログラムの出力を 1 または -1 にしようとしていますが、これはこれまでのコードであり、唯一の出力は -1 です。まったくランダムではありません。
Random rnd = new Random();
int L = rnd.Next(0, 1);
if (L == 0)
{
Console.WriteLine(-1);
}
else
{
Console.WriteLine(1);
}
2 番目の引数Random.Next(int, int)
は、排他的な上限を指定します。つまり、0 以上で 1 未満の整数が必要だと言っているのです。これでは、0 以外の数値には多くの範囲が与えられません :)
ドキュメントから:
戻り値
の 型: System.Int32
minValue 以上で maxValue 未満の 32 ビット符号付き整数。つまり、戻り値の範囲には minValue は含まれますが、maxValue は含まれません。minValue が maxValue と等しい場合、minValue が返されます。
他の一般的な問題を回避するために、ランダム性に関する私の記事もお読みください。
rnd.Next(0, 1)
i
範囲内の値を返します0 <= i < 1
。そのような値は だけです0
。
ドキュメントを見てください:
最小値
タイプ: System.Int32
返される乱数の包括的な下限。
最大値
タイプ: System.Int32
返される乱数の排他的な上限。maxValue は minValue 以上である必要があります。
minValue
は包括的maxValue
であり、排他的であることに注意してください。したがって、より一般的に言えば、このオーバーロードはnext()
範囲内の値を返します。
minValue <= i < maxValue
用語を認識していない場合は、不等式のコンテキストで、包括的手段<=
または>=
および排他的手段<
または>
.
上記の不等式は、minValue == maxValue の場合には厳密には当てはまりませんが、より明確な説明のために、その特殊なケースを無視することにしました。
プログラムの出力を 1 または -1 にしようとしていますが、これはこれまでのコードであり、唯一の出力は -1 です。まったくランダムではありません。
代わりに単純なアルゴリズムを使用できます。
int L = (rnd.Next (1, 3) * 2) - 3;
Console.WriteLine(L);
2 つの引数を持つ Random.Next は値 min <= < max を返します
したがって、値 0 または 1 が必要です。コードを次のように単純に変更します。rnd.Next(0, 2);
- これは 0 または 1 を返します。