不希望一个随机数显示两次
本文关键字:显示 两次 随机数 一个 希望 | 更新日期: 2023-09-27 17:50:47
我试图在列表中保存随机数,相同的数字不能出现两次。这是一个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())
有几种方法可以做到这一点:
- 跟踪哪些数字被"调用"-如果一个数字在列表中,选择一个不同的
- 从原始列表中删除已调用的号码,然后每次随机选择一个新号码。
- 按随机数对可能值的列表进行排序,并通过列表进行工作
完成此操作的最简单方法是使用HashSet
。
var usedNumbers = new HashSet<int>();
...
int number;
do {
number = rnd.Next(1, 76);
} while (usedNumbers.Contains(number));
usedNumbers.Add(number);