c# - 生成 0 到 9 之间的三个唯一数字列表的最佳方法

标签 c# random while-loop

基本上都在标题里了。这很简单,但我不知道为什么我的 While 循环有时会失败。我时不时会得到一个长度为 2 而不是 3 的列表。

这是我的 C# 代码:

public List<int> generateRequiredSecretCode()
{
    List<int> placeHolder = new List<int>();
    Random random = new Random();
    int randomNo = random.Next(0, 10);
    while (!placeHolder.Contains(randomNo) && placeHolder.Count != 3)
    {
        placeHolder.Add(randomNo);
        randomNo = random.Next(0, 10);
    }
    return placeHolder;
}

我的目标总结:我想要一个 整数列表长度为 3,列表中的每个数字都在 0 到 9 之间,并且 独一无二

最佳答案

你可以使用一个整洁的 LINQ 两行代码

var random = new Random();
return Enumerable.Range(0,10).OrderBy(i => random.NextDouble()).Take(3).ToList();

关于c# - 生成 0 到 9 之间的三个唯一数字列表的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14398165/

相关文章:

c - 换行符在格式字符串中时 scanf 的行为

c++ - 使用完全正方形的计数器控制 While 循环

c# - 重载枚举运算符 C# 和 Silverlight

c# - 本地数据库不会显示我以编程方式添加的表

c# - 如何生成[0,1]范围内的随机双数?

php - 通过 PHP 随机化目录中的照片

PHP 我可以在 while 循环之外获取行 ["name"] 的值吗?

c# - Dispose 中的成员变量访问

c# - 将 LINQ 移植到 C# 2 库中

java - java中具有不同出现规则的从一个数组到另一个数组的随机数