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
的单个实例的方法并不适用