随机获取两个数字之间的所有数字

时间:2014-04-24 03:19:34

标签: c# random shuffle

我不确定,如果这个问题很独特,但我找不到答案。

我想要一个很好的方法在C#中随机获取1到9之间的数字(包括9),我希望拥有所有9个数字。所以我需要一个在1到9之间返回9个数字的函数,我需要每个数字一次。

例如,结果如下所示: 4,3,2,6,9,7,1,5,8

2 个答案:

答案 0 :(得分:3)

我会这样做:

var rnd = new Random();

var numbers =
    Enumerable
        .Range(1, 9)
        .OrderBy(x => rnd.Next())
        .ToArray();

我得到的一个例子是:

example result

答案 1 :(得分:0)

你走了:

public void Shuffle(List<int> list)
{
    Random random = new Random();
    for (int i = 0; i < list.Count; i++)
    {
        int k = random.Next(i + 1);
        int val = list[k];
        list[k] = list[i];
        list[i] = val;
    }
}

用法:

List<int> list = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Shuffle(list);