c# - 尝试在随机生成 1 或循环 10 次后结束 while 循环
问题描述
(我为糟糕的格式道歉)
我正在尝试制作一个随机数生成器(min = 1,max = 10),它会循环直到
a) 生成一个 1(作为主要哨兵)。b) 循环迭代 10 次(次要哨兵)而不产生 1。
我正在寻找这样的东西:
6 3 8 4 1 “在 5 次尝试中收到了一个”,
或者
3 8 5 7 2 2 4 8 8 3 “从未收到过一个。”
但问题是即使生成了 1,循环也会继续,并且“从未收到过 A”。消息显示。循环如下:
while (randomNumber.Next() != 1 || loopCounter <= 10));
{
loopCounter++;
Console.WriteLine(randomNumber.Next(10));
Thread.Sleep(100);
if (randomNumber.Next() == 1)
{
Console.WriteLine($"A one was recieved in {loopCounter} attempts.")
break;
}
if (loopCounter <= 10)
{
Console.WriteLine("A one was not recieved.")
break;
}
}
给予类似的东西
1 4 6 9 7 1 3 3 1 9 “没有收到一个。”
解决方案
您或多或少有正确的想法来推断是否满足这两个条件中的每一个(除了睡眠线程?)。
但是,如果您在初始化变量以跟踪您正在做的事情之后执行此操作,而不是在进行过程中进行检查,则更容易产生一种满足我假设是家庭作业问题的要求的方法。
Random rand = new Random();
int randomNumber = 0;
int maxLoops = 10;
string numbersSoFar = "";
for (int i = 1; i <= maxLoops; i++)
{
//Generate random number between 1 and 10:
randomNumber = rand.Next(1, 10);
numbersSoFar += randomNumber + " ";
if (randomNumber == 1)
{
Console.WriteLine(numbersSoFar);
Console.WriteLine("1 was found on loop number: " + i);
break;
}
else if (i == 10)
{
Console.WriteLine(numbersSoFar);
Console.WriteLine("10 loops completed, no 1 found.");
}
}
由于其中一个条件是您拥有最大数量的循环,因此您可以在 a 中使用它for loop
,而不是在 while 循环中使用它,让您可以访问要iterator
比较的立即数,而不是声明与 while 循环耦合的额外值。这样它就会自动终止,因为在您的问题中,您还需要一个突破/终止条款。
推荐阅读
- r - 根据部分名称将公式应用于一系列变量
- python - 如果文件夹中存在,则移动文件并重命名
- sql - 尝试进行简单更新但 SQL 错误:ORA-01779:无法修改映射到非键保留表的列
- javascript - (已解决)使用 TestCafe - 如何阻止移动 Web 智能应用程序横幅出现?
- python - 在 Python 中跟踪子进程和线程
- powershell - 如何在PowerShell中输出粗体文本?
- json - 如何查询 django JSON 字段中的特定字段
- python - 带有 Socket 和 Argparse 的 Python HTTP 响应
- typescript - 如何在 TS 中声明函数 const `f = ({ a = 0 } = {}) => a` 的类型
- google-bigquery - 删除 BigQuery 中值为 X 的嵌套字段