私はC#、RandomVariableUniformeのクラスを持っています。このクラスには次のメソッドがあります: (Max と Min はフィールド max と min を変更するためのプロパティです)
public double runif(ref Random randomNumber)
{
double number;
number = Min + randomNumber.NextDouble() * (Max - Min);
Console.Write("number = {0,6:F3} ", number);
return number;
}
メインファイルには次のものがあります: (ここで、A[i] と A[j] は、配列に保存された、最大値と最小値が異なる上記のクラスのオブジェクトです。)
int n = 5;
double[] x = new double[n];
double[] y = new double[n];
Random randomNumber = new Random();
for (int cont = 0; cont < n; cont++)
{
x[cont] = A[i].runif(ref randomNumber);
y[cont] = A[j].runif(ref randomNumber);
Console.WriteLine("\nx[cont] = {0,6:F3} y[cont] = {0,6:F3}", x[cont], y[cont]);
}//end for
ただし、メソッドが疑似乱数を正しく生成している間、プログラムは最初の呼び出しのみを保存しています。出力は次のとおりです。
number = 509,986 number = 470,079
x[cont] = 509,986 y[cont] = 509,986
number = 507,614 number = 418,733
x[cont] = 507,614 y[cont] = 507,614
number = 432,070 number = 463,316
x[cont] = 432,070 y[cont] = 432,070
number = 446,716 number = 476,604
x[cont] = 446,716 y[cont] = 446,716
number = 440,344 number = 459,617
x[cont] = 440,344 y[cont] = 440,344
なぜこれが起こっているのですか?
前もって感謝します。