我有一个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)
任何想法为什么会这样?
提前致谢.
您的格式字符串引用第一个参数两次.
改变这个:
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,在你的情况下它什么都不做.
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |