创建没有重复的随机数列表

时间:2015-08-15 09:03:37

标签: random

我正在寻找从1到15创建“随机”数字的列表,但没有任何重复。我创建了一个数组,并希望将每个数字存储在其中,但无法弄清楚如何执行此操作。我已经创建了随机列表并将它们存储在数组中,但不能完全确保没有重复。任何帮助,将不胜感激。我的代码如下:

    int[] myList = new int[15];
    Random random = new Random();

    for (int i = 0; myList.Length; i++)
    {
     myList[i] = random.Next(1, 15);
    }

2 个答案:

答案 0 :(得分:1)

由于列表的大小等于可能的值,您只需按正常顺序创建列表:

int[] myList = new int[15];
for (int i = 0; i < myList.Length; i++)
{
    myList[i] = i + 1;
}

然后 shuffle ,例如为每个条目分配一个随机值并按该值排序:

Random random = new Random();
myList = myList.OrderBy(a => random.Next()).ToArray();

答案 1 :(得分:0)

您可以使用Fisher–Yates shuffle

示例实施:

int n = 15;
int[] myList = new int[n];
Random random = new Random();

for (int i = 0; i < n; i++)
{
    myList[i] = i + 1;
}
for (int i = n - 1; i >= 1; i--)
{
    int j = random.Next(1, i);
    int temp=myList[i];
    myList[i]=myList[j];
    myList[j]=temp;
}