我需要帮助来创建一个算法来生成9个随机数.每个号码不得与任何其他号码相同.重写为1-9的9个随机数.
我有这样的想法:
int[] numlist = new int[9];
Random rand = new Random();
int temp;
foreach (int i in numlist) {
temp = rand.Next(1, 10);
//check if temp is already a value of a lower index in numlist
//if so, rolls another random number and checks it again...
numlist[i] = temp;
}
Run Code Online (Sandbox Code Playgroud)
我有一个方法,if内部循环内部循环,而foreach循环内部循环等...
这听起来对我来说,就像你可能会从你的1..9列表开始变得更好 - 然后将其改组,以获得随机顺序.
var random = new Random();
int[] array = Enumerable.Range(1, 9).ToArray();
for (int i = array.Length; i > 1; i--)
{
// Pick random element to swap.
int j = random.Next(i); // 0 <= j <= i-1
// Swap.
var tmp = array[j];
array[j] = array[i - 1];
array[i - 1] = tmp;
}
Run Code Online (Sandbox Code Playgroud)