这个问题在这里已有答案:
我想生成随机数并将它们放在一个数组中,但它们只应在此数组中出现一次。这就像一个迷你乐透游戏。这是我现在的代码:
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();
生成随机数并将其放入此阵列中。我只需要知道如何编程它们只出现一次。
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();
使用HashSet<T>
。集合是一个不包含重复元素的集合,其元素没有特定的顺序。
像这样的东西:
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);
}
每次生成一个新数字时,不要立即将其放入数组中,而是从开始到当前位置检查数组(使用for循环)。如果不存在则插入生成的数字,否则生成新的数字并重复该过程。