Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#从数组中删除重复项 int[]RandArray=newint[6]; 随机随机数=新随机数(); 用于(int计数器=0;计数器_C#_Arrays - Fatal编程技术网

c#从数组中删除重复项 int[]RandArray=newint[6]; 随机随机数=新随机数(); 用于(int计数器=0;计数器

c#从数组中删除重复项 int[]RandArray=newint[6]; 随机随机数=新随机数(); 用于(int计数器=0;计数器,c#,arrays,C#,Arrays,这个程序生成6个从1到49的随机数。 目前,它两次生成相同的数字。如何使其不重复任何数字?这段代码可以改进吗?您可以使用存储到目前为止生成的数字。HashSet只会在不包含新生成的数字的情况下添加该数字。像这样: int[] RandArray = new int[6]; Random randNumber = new Random(); for (int Counter = 0; Counter < RandArray.Length; Counter++

这个程序生成6个从1到49的随机数。 目前,它两次生成相同的数字。如何使其不重复任何数字?这段代码可以改进吗?

您可以使用存储到目前为止生成的数字。HashSet只会在不包含新生成的数字的情况下添加该数字。像这样:

int[] RandArray = new int[6];

        Random randNumber = new Random();
        for (int Counter = 0; Counter < RandArray.Length; Counter++)
        {
            RandArray[Counter] = randNumber.Next(1,50);

        }

        Console.WriteLine(RandArray[0]);
        Console.WriteLine(RandArray[1]);
        Console.WriteLine(RandArray[2]);
        Console.WriteLine(RandArray[3]);
        Console.WriteLine(RandArray[4]);
        Console.WriteLine(RandArray[5]);
        Console.ReadLine();
相反,如果希望数字按升序排列,可以这样做:

int[] integer_array = numbers.ToArray();
您可以使用存储到目前为止生成的数字。HashSet只会在不包含新生成的数字的情况下添加该数字。像这样:

int[] RandArray = new int[6];

        Random randNumber = new Random();
        for (int Counter = 0; Counter < RandArray.Length; Counter++)
        {
            RandArray[Counter] = randNumber.Next(1,50);

        }

        Console.WriteLine(RandArray[0]);
        Console.WriteLine(RandArray[1]);
        Console.WriteLine(RandArray[2]);
        Console.WriteLine(RandArray[3]);
        Console.WriteLine(RandArray[4]);
        Console.WriteLine(RandArray[5]);
        Console.ReadLine();
相反,如果希望数字按升序排列,可以这样做:

int[] integer_array = numbers.ToArray();

这回答了您的标题问题。
使用
Distinct
LINQ操作符,它将删除重复的元素

这回答了你的身体问题

要多次不生成同一个数字,请将数字存储在
哈希集中,并检查每个迭代是否以前生成过数字,如果需要,请重新滚动。

这回答了您的标题问题。
使用
Distinct
LINQ操作符,它将删除重复的元素

这回答了你的身体问题

要多次不生成相同的数字,请将数字存储在一个
哈希集中,并检查每个迭代是否以前生成过数字,如果需要,请重新滚动。

您可以为创建的每个数字检查重复的数字:

int[] integer_array = numbers.OrderBy(x => x).ToArray();
int[]RandArray=newint[6];
随机随机数=新随机数();
用于(int计数器=0;计数器
您可以为创建的每个数字检查重复项:

int[] integer_array = numbers.OrderBy(x => x).ToArray();
int[]RandArray=newint[6];
随机随机数=新随机数();
用于(int计数器=0;计数器
您可以创建一个从1到50的数字范围,随机排序,然后将该范围内的6个数字放入列表:

int[] RandArray = new int[6];

Random randNumber = new Random();
for (int Counter = 0; Counter < RandArray.Length; Counter++) {
  // Loop until you find an unused number
  bool found;
  do {
    // Get a random number
    int num = randNumber.Next(1,50);
    // Look through the numbers picked so far
    found = false;
    for (int i = 0; i < Counter; i++) {
      found |= num == RandArray[i];
    }
    // If the number was found go back and pick a new one
  } while(found);
  // Put the number in the array
  RandArray[Counter] = num;
}

foreach (int n in RandArray) {
  Console.WriteLine(n);
}
Console.ReadLine();

.NET Fiddle-

您可以创建一个从1到50的数字范围,随机排序,然后将该范围内的6个数字放入列表:

int[] RandArray = new int[6];

Random randNumber = new Random();
for (int Counter = 0; Counter < RandArray.Length; Counter++) {
  // Loop until you find an unused number
  bool found;
  do {
    // Get a random number
    int num = randNumber.Next(1,50);
    // Look through the numbers picked so far
    found = false;
    for (int i = 0; i < Counter; i++) {
      found |= num == RandArray[i];
    }
    // If the number was found go back and pick a new one
  } while(found);
  // Put the number in the array
  RandArray[Counter] = num;
}

foreach (int n in RandArray) {
  Console.WriteLine(n);
}
Console.ReadLine();

.NET Fiddle-

感谢您的快速回复。我忘了问我怎样才能把最终的数字列表按升序排列?@HaseebAhmed,我更新了我的答案来展示如何排列列表。谢谢你的快速回复。我忘了问我如何将最终的数字列表按升序排列?@HaseebAhmed,我更新了我的答案,以显示如何对列表进行排序。你不需要
Contains()
,因为如果整数已经在集合中,它就不会被添加。你不需要
Contains()
因为整数已经在集合中,它就不会被添加。