我正在寻找从1到15创建“随机”数字的列表,但没有任何重复。我创建了一个数组,并希望将每个数字存储在其中,但无法弄清楚如何执行此操作。我已经创建了随机列表并将它们存储在数组中,但不能完全确保没有重复。任何帮助,将不胜感激。我的代码如下:
int[] myList = new int[15];
Random random = new Random();
for (int i = 0; myList.Length; i++)
{
myList[i] = random.Next(1, 15);
}
答案 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;
}