如何从数组创建一个随机数

007*_*070 4 c# random

我在做C#编码.在我的编码中,我需要生成一个随机的数字列表.通常,如果我们创建一个随机数,我们需要选择数字的范围.但是对于我的情况,我需要从数组中创建一个随机数.任何的想法?我正在使用XAML和C#.

private void Submit_Click(object sender, RoutedEventArgs e)
    {         
        int[] numbers = new int[5] {32, 67, 88, 13, 50};
        Random rd = new Random();
        //int myNo = rd.Next(numbers[])?                    
    }
Run Code Online (Sandbox Code Playgroud)

额外:每次单击提交按钮,将选择随机数字[].我怎样才能确保不重复这个数字.例如:第一次点击,myNo = 67; 第二次点击,myNo = 50; 第3次点击,myNo = 88; 第4次点击,myNo = 32; 第5次点击,myNo = 13.谢谢!

Hab*_*bib 12

您可以创建一个随机数字,表示数组中的索引.从该随机索引访问数组元素,您将得到您的数字,因为数组中的所有数字似乎都是不同的.

int[] numbers = new int[5] { 32, 67, 88, 13, 50 };
Random rd = new Random();
int randomIndex = rd.Next(0, 5);
int randomNumber = numbers[randomIndex];
Run Code Online (Sandbox Code Playgroud)

编辑:(感谢@Corak)您可以根据数组长度生成随机索引,这将使其动态化并适用于任何数组的长度.

int randomIndex = rd.Next(0, numbers.Length);
Run Code Online (Sandbox Code Playgroud)

编辑2 :(对于问题的其他部分).

您需要在类级别维护一个唯一索引号列表.所以你的代码将是这样的:

Random rd = new Random(); //At class level
List<int> uniqueIndices = new List<int>(); //At class level
private void Submit_Click(object sender, RoutedEventArgs e)
{         
    int[] numbers = new int[5] {32, 67, 88, 13, 50};
    int randomIndex = rd.Next(0, numbers.Length);
    while(list.Contains(randomIndex)) //check if the item exists in the list or not. 
    {
        randomIndex = rd.Next(0, numbers.Length);
    }
    list.Add(randomInex);
    //...rest of your code. 


}
Run Code Online (Sandbox Code Playgroud)