C# 随机数在数组c中只出现一次

C# 随机数在数组c中只出现一次,c#,arrays,random,C#,Arrays,Random,我想生成随机数并将它们放入一个数组中,但它们在这个数组中应该只出现一次。这就像一个小型彩票游戏。 这是我现在掌握的代码: int[] arrA = new int[10]; Random random = new Random(); for (int i = 0; i <= arrA.Length -1; i++) { arrA[i] = random.Next(1, 15); Console.WriteLine(arrA[i]); } Conso

我想生成随机数并将它们放入一个数组中,但它们在这个数组中应该只出现一次。这就像一个小型彩票游戏。 这是我现在掌握的代码:

int[] arrA = new int[10];
Random random = new Random();

for (int i = 0; i <= arrA.Length -1; i++)
{           
    arrA[i] = random.Next(1, 15);
    Console.WriteLine(arrA[i]);
}

Console.ReadKey();

生成随机数并放入该数组。我只需要知道如何编程使它们只出现一次。

每次生成一个新数字,而不是立即将其放入数组中,使用for循环从开始到当前位置检查数组。如果没有,则插入生成的编号,否则生成一个新编号并重复该过程

使用。集合是不包含重复元素的集合,其元素没有特定顺序

  int[] arrA = new int[10];
    Random random = new Random();

    for (int i = 0; i <= arrA.Length - 1; i++)
    {
        var number = random.Next(1, 15);
        while (arrA.Any(n => n == number))
        {
            number = random.Next(1, 15);
        }

        arrA[i] = number;
        Console.WriteLine(arrA[i]);
    }


    Console.ReadKey();
大概是这样的:

using System;
using System.Collections.Generic;

HashSet<int> numbers = new HashSet<int>();
for (int i = 0; i < 10; i++)
{
    // Start with a random number
    //
    int value = random.Next(1,15);

    // Check whether you already have that number
    // Keep trying until you get a unique
    //
    while (numbers.Contains(value)) {
        value = random.Next(1,15);
    }

    // Add the unique number to the set
    numbers.Add(value);
}
foreach (int i in numbers)
{
    Console.Write(" {0}", i);
}

当你选择一个随机数时,检查它是否已经在数组中。如果是,请选择另一个。但是我怎么做?包含…?只需要一个数字不是随机的,尤其是当范围很小时。当你设置唯一性约束时,你最终得到了一个更可预测的数字。你想要做的一个线性函数是:var arrA=Enumerable.Range1,14.OrderByg=>random.Next.Take10.ToArray;这个主意来了,非常感谢!但是你能解释一下这个while是如何工作的吗?而arrA.Anyn=>n==number意味着如果生成的随机数存在于数组中,那么生成一个other,以此类推,这是一个循环,只有当随机数不存在于数组中时才会结束。查看Microsoft文档了解更多信息和示例文档:可以添加while循环,以确保数字始终具有10个唯一的随机值。如果生成的数字已经存在,则哈希集将不包含10个元素。计数=10个重复的数字啊,对,谢谢。我一发帖就想到了同样的事情。编辑以添加检查。您可以使用中的返回值来简化代码。类似于var i=0;我