在C#中保存了两个调用方法并且只保存了第一个调用结果

Rod*_*lfo 2 c# arrays methods

我有一个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;
}
Run Code Online (Sandbox Code Playgroud)

并且在主文件中我有以下内容:(其中A [i]和A [j]是具有不同max和min的上述类的对象,保存在数组中.)

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
Run Code Online (Sandbox Code Playgroud)

然而,当该方法正确生成伪随机数时,程序仅保存第一个调用.输出如下:(其中number是方法生成的数字,以及应该由下面的相应向量保存的数字

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
Run Code Online (Sandbox Code Playgroud)

任何想法为什么会这样?

提前致谢.

Chr*_*ris 6

您的格式字符串引用第一个参数两次.

改变这个:

Console.WriteLine("\nx[cont] = {0,6:F3}   y[cont] = {0,6:F3}", x[cont], y[cont]);
Run Code Online (Sandbox Code Playgroud)

至:

Console.WriteLine("\nx[cont] = {0,6:F3}   y[cont] = {1,6:F3}", x[cont], y[cont]);
                                                     ^
Run Code Online (Sandbox Code Playgroud)

另外,作为旁注,你不需要refin ref Random randomNumber,在你的情况下它什么都不做.