不希望一个随机数显示两次



我试图在列表中保存随机数,相同的数字不能出现两次。这是一个BINGO游戏,这种方法用于显示ex B12,然后用户点击回车,一个新的数字将显示。这将一直持续到用户写入q。

这个可以,但是这个数字可以出现两次…

static void bingo()
{
    Random rnd =new Random();
    List<int> check = new List<int>();
    string choice = "";
    while (choice != "Q")
    {
        int number = rnd.Next(1, 76);
        while (!check.Contains(number))
        { 
            kontroll.Add(number); 
        }
        if (number <=15)
        {
            choice = Interaction.InputBox("B" + number);
            choice = choice.ToUpper();
        }
        else if(number <= 30)
        etc.

这样的东西应该工作(如果我没看错你的问题)

Enumerable.Range(76)。order (n => rnd.NextDouble())

有几种方法可以做到这一点:

  1. 跟踪哪些数字被"调用"-如果一个数字在列表中,选择一个不同的
  2. 从原始列表中删除已调用的号码,然后每次随机选择一个新号码。
  3. 按随机数对可能值的列表进行排序,并通过列表进行工作

完成此操作的最简单方法是使用HashSet

var usedNumbers = new HashSet<int>();
...
int number;
do {
    number = rnd.Next(1, 76);
} while (usedNumbers.Contains(number));
usedNumbers.Add(number); 

最新更新