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

C# 在一个数组中获取9个不同数字的算法,c#,algorithm,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

我需要帮助创建一个算法,使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;
}

我有一个方法,
if
s-inside-for-inside循环,而for-each循环中的循环等等…

我觉得,你最好从1..9的列表开始,然后将其洗牌,以获得一个随机顺序

使用

var random=new random();
int[]数组=可枚举的.Range(1,9).ToArray();
对于(int i=array.Length;i>1;i--)
{
//选择要交换的随机元素。

int j=random.Next(i);//0在我看来,你最好从1..9的列表开始,然后将其洗牌,以获得一个随机顺序

使用

var random=new random();
int[]数组=可枚举的.Range(1,9).ToArray();
对于(int i=array.Length;i>1;i--)
{
//选择要交换的随机元素。

int j=random.Next(i);//0如果您知道需要什么值,那么只需OrderBy,它就会随机化这些值

var numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9};
var shuffled = numbers.OrderBy(a => System.Guid.NewGuid()).ToArray();

如果你知道你需要什么样的值,那么只需OrderBy,它就会随机化它们

var numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9};
var shuffled = numbers.OrderBy(a => System.Guid.NewGuid()).ToArray();

从标题中删除标记名从标题中删除标记名击败我。不应该花时间编辑问题…击败我。不应该花时间编辑问题…按NewGuid排序有风险-因为结果不会均匀随机按NewGuid排序有风险-因为结果不会均匀随机