在数组中获取9个不同数字的算法

0 c# algorithm

我需要帮助来创建一个算法来生成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循环内部循环等...

Dav*_*ish 6

这听起来对我来说,就像你可能会从你的1..9列表开始变得更好 - 然后将其改组,以获得随机顺序.

使用Fisher-Yates shuffle

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)