C# 在传递数组时遇到问题
我在传递数组值时遇到问题。我已经研究这个问题好几个小时了,似乎找不到答案。不知是否有人能给我指出正确的方向。这就是我目前所拥有的。我看了无数的例子、视频和阅读材料,似乎没有找到解决办法。我真的很感激你的帮助C# 在传递数组时遇到问题,c#,arrays,C#,Arrays,我在传递数组值时遇到问题。我已经研究这个问题好几个小时了,似乎找不到答案。不知是否有人能给我指出正确的方向。这就是我目前所拥有的。我看了无数的例子、视频和阅读材料,似乎没有找到解决办法。我真的很感激你的帮助 static void Main(string[] args) { int Seed = 0; int[] random = new int[10]; int[] input = new int[10];
static void Main(string[] args)
{
int Seed = 0;
int[] random = new int[10];
int[] input = new int[10];
for (int x = 0; x < random.Length; x++)
{
Seed = (int)DateTime.Now.TimeOfDay.Ticks;
random[x] = getRnd(Seed);
}
for (int x = 0; x < input.Length; x++)
{
Console.Write("Enter an integer number between 1 and 100: ");
input[x] = Convert.ToInt32(Console.ReadLine());
}
int inputnumber=input[0];
for (int x = 0; x < input.Length; x++)
if (inputnumber <= random[x])
{
Console.WriteLine("The entered number " + inputnumber + " is less than " + random[x]);
}
else if (inputnumber >= random[x])
{
Console.WriteLine("The entered number " + inputnumber + " is greater than " + random[x]);
}
else if (inputnumber == random[x])
{
Console.WriteLine("The entered number " + inputnumber + " is equal to " + random[x]);
}
}
static int getRnd(int Seed)
{
Random myrandomnum = new Random(Seed);
int randomvalue = myrandomnum.Next(1, 100);
return randomvalue;
}
}
但我明白了:
Enter an integer number between 1 and 100: 1
Enter an integer number between 1 and 100: 8
Enter an integer number between 1 and 100: 44
Enter an integer number between 1 and 100: 22
Enter an integer number between 1 and 100: 16
Enter an integer number between 1 and 100: 88
Enter an integer number between 1 and 100: 41
Enter an integer number between 1 and 100: 77
Enter an integer number between 1 and 100: 10
Enter an integer number between 1 and 100: 52
The entered number 1 is less than 64
The entered number 1 is less than 64
The entered number 1 is less than 64
The entered number 1 is less than 64
The entered number 1 is less than 64
The entered number 1 is less than 64
The entered number 1 is less than 64
The entered number 1 is less than 64
The entered number 1 is less than 64
The entered number 1 is less than 64
Press any key to continue . . .
有两个问题-一个解释为什么只使用第一个输入数字,另一个解释为什么只将其与一个随机数字进行比较 对于随机数部分,问题是:
Seed = (int)DateTime.Now.TimeOfDay.Ticks;
random[x] = getRnd(Seed);
...
static int getRnd(int Seed)
{
Random myrandomnum = new Random(Seed);
除非DateTime.Now.TimeOfDay.Ticks
在迭代之间发生变化-这是不太可能的,因为系统时钟分辨率通常以毫秒为单位,并且在迭代之间您没有做很多工作-您正在创建多个Random
实例,所有实例都使用相同的种子。这意味着您将从每个实例中获得相同的随机数序列,但实际上您只需要从每个实例中获取一个数字
解决方案是创建一个Random
实例,然后对生成的每个随机数使用该实例
Random rng = new Random();
for (int x = 0; x < random.Length; x++)
{
random[x] = GenerateRandomValue(rng);
}
...
static int GenerateRandomValue(Random random);
{
int randomvalue = random.Next(1, 100);
return randomvalue;
}
Random rng=new Random();
对于(int x=0;x
当然,在这一点上,您可以考虑完全去除该方法,并使用:
Random rng = new Random();
for (int x = 0; x < random.Length; x++)
{
random[x] = random.Next(1, 100);
}
Random rng=new Random();
对于(int x=0;x
你也可以考虑使用<代码>随机。下一步(1, 100)< /C>如果你想要一个介于1到100之间的值-第二个参数到“代码>随机”。 请注意,这种创建
Random
的单个实例的方法在多线程场景中效果不佳,因为Random
不是线程安全的。幸运的是,这不是一个问题,但是如果您以后需要,请参阅以获取更多信息
对于“仅使用单个输入值”问题,LaD1Da的回答更为详细,但问题是
inputNumber
始终是input[0]
。。。你从来没有使用过input[1]
,input[2]
等等。有两个问题-一个解释为什么你只使用第一个输入数字,另一个解释为什么你只将它与一个随机数进行比较
对于随机数部分,问题是:
Seed = (int)DateTime.Now.TimeOfDay.Ticks;
random[x] = getRnd(Seed);
...
static int getRnd(int Seed)
{
Random myrandomnum = new Random(Seed);
除非DateTime.Now.TimeOfDay.Ticks
在迭代之间发生变化-这是不太可能的,因为系统时钟分辨率通常以毫秒为单位,并且在迭代之间您没有做很多工作-您正在创建多个Random
实例,所有实例都使用相同的种子。这意味着您将从每个实例中获得相同的随机数序列,但实际上您只需要从每个实例中获取一个数字
解决方案是创建一个Random
实例,然后对生成的每个随机数使用该实例
Random rng = new Random();
for (int x = 0; x < random.Length; x++)
{
random[x] = GenerateRandomValue(rng);
}
...
static int GenerateRandomValue(Random random);
{
int randomvalue = random.Next(1, 100);
return randomvalue;
}
Random rng=new Random();
对于(int x=0;x
当然,在这一点上,您可以考虑完全去除该方法,并使用:
Random rng = new Random();
for (int x = 0; x < random.Length; x++)
{
random[x] = random.Next(1, 100);
}
Random rng=new Random();
对于(int x=0;x
你也可以考虑使用<代码>随机。下一步(1, 100)< /C>如果你想要一个介于1到100之间的值-第二个参数到“代码>随机”。 请注意,这种创建
Random
的单个实例的方法在多线程场景中效果不佳,因为Random
不是线程安全的。幸运的是,这不是一个问题,但是如果您以后需要,请参阅以获取更多信息
对于“仅使用单个输入值”问题,LaD1Da的回答更为详细,但问题是
inputNumber
始终是input[0]
。。。你从来没有使用过input[1]
,input[2]
等等。有两个问题-一个解释为什么你只使用第一个输入数字,另一个解释为什么你只将它与一个随机数进行比较
对于随机数部分,问题是:
Seed = (int)DateTime.Now.TimeOfDay.Ticks;
random[x] = getRnd(Seed);
...
static int getRnd(int Seed)
{
Random myrandomnum = new Random(Seed);
除非DateTime.Now.TimeOfDay.Ticks
在迭代之间发生变化-这是不太可能的,因为系统时钟分辨率通常以毫秒为单位,并且在迭代之间您没有做很多工作-您正在创建多个Random
实例,所有实例都使用相同的种子。这意味着您将从每个实例中获得相同的随机数序列,但实际上您只需要从每个实例中获取一个数字
解决方案是创建一个Random
实例,然后对生成的每个随机数使用该实例
Random rng = new Random();
for (int x = 0; x < random.Length; x++)
{
random[x] = GenerateRandomValue(rng);
}
...
static int GenerateRandomValue(Random random);
{
int randomvalue = random.Next(1, 100);
return randomvalue;
}
Random rng=new Random();
对于(int x=0;x
当然,在这一点上,您可以考虑完全去除该方法,并使用:
Random rng = new Random();
for (int x = 0; x < random.Length; x++)
{
random[x] = random.Next(1, 100);
}
Random rng=new Random();
对于(int x=0;x
你也可以考虑使用<代码>随机。下一步(1, 100)< /C>如果你想要一个介于1到100之间的值-第二个参数到“代码>随机”。 请注意,这种创建
Random
的单个实例的方法并不适用