c# - 如何从数组创建随机数

标签 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[])?                    
    }

EXTRA:每次我单击提交按钮时,都会选择随机数 numbers[]。我怎样才能确保号码不重复。例如:第一次点击,myNo = 67;第二次点击,myNo = 50;第三次点击,myNo = 88;第四次点击,myNo = 32;第 5 次点击,myNo = 13。谢谢!

最佳答案

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

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

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

int randomIndex = rd.Next(0, numbers.Length);

编辑 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. 


}

关于c# - 如何从数组创建随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16139925/

相关文章:

c# - 获取二叉树中节点索引的最简单方法 C#

c# - 在添加自己的 LinearLayout 期间无法激活 JNI 句柄 - Xamarin Android

c# - 道格拉斯-普克算法 : understanding use with polgyons

python - 使用Python计算一定时间间隔内的随机数

c# - 如何在 C# 中使用正则表达式解析重复的名称-值对

c# - .NET Framework v4.5.2 中的 ZipArchive 构造函数在 Windows 10 和 Windows Server 2012 和 2008 机器上产生不一致的结果?

ios - 生成随机字符串后的奇怪返回值(Swift 3)

java - HashMap.put 在 Java 中导致无限循环

python - 枚举上的随机选择

c++ - 多组独立的随机数