gpt4 book ai didi

c# - C# 中有两种调用方法,并且只保存第一个调用结果

转载 作者:行者123 更新时间:2023-12-02 17:51:23 25 4
gpt4 key购买 nike

我有一个 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是该方法生成的数字以及下面相应向量应该保存的数字

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

有什么想法为什么会发生这种情况吗?

提前致谢。

最佳答案

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

更改此:

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

致:

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

另外,作为旁注,您不需要 ref Random randomNumber 中的 ref,在您的情况下它什么也不做。

关于c# - C# 中有两种调用方法,并且只保存第一个调用结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19300356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com