【问题标题】:C++ Random Number Output "Game"C++ 随机数输出“游戏”
【发布时间】:2016-10-22 19:40:44
【问题描述】:

这是我的 C++ 入门作业,我不确定我是否应该在这里寻求家庭作业帮助,但我很想弄清楚这一点,因为我所寻找的每个地方似乎都有不同的答案如何在给定范围内做随机数。

程序会要求用户输入五个以空格分隔的单个字符,并根据字符生成一个随机数。

规则如下:

  • 如果输入字符为“A”,程序将生成一个从 1 到 20 的随机数。

  • 如果输入字符为“B”,程序将生成一个从 21 到 40 的随机数。

  • 如果输入字符是'C',程序会生成一个从41到60的随机数。

  • 如果输入字符为“D”,程序将生成一个从 61 到 80 的随机数。

  • 如果输入字符是'E',程序会生成一个从81到100的随机数。

  • 如果输入字符不是上述字符之一,则在输出中显示“*”。

我不确定如何最好地构造它以输出给定范围内的数字。请记住,这是一个介绍类,所以我们只了解“if”语句并使用 rand() 和 srand()。

我不是要求为我完成作业,哈哈。我只是想知道该怎么做,因为我可以从教授给我们的与这项作业有关的幻灯片中找到 2 张幻灯片,但我不知道该怎么做。

编辑: 这个问题不是重复的,因为另一个问题使用了比我接触过的更高级的代码。这是介绍 C++ 类的,我们只介绍了 if 语句。 也感谢您的反对票!真的让我觉得这里很受欢迎。

【问题讨论】:

标签: c++ random


【解决方案1】:

检查srand()rand() 以获取随机数生成器。对于初学者, rand() 将始终在运行时生成相同的数字,无论您调用多少次。但是,使用srand(),您很可能会生成一个不同的数字。

我曾经做过一次带有rand()srand() 的项目,如果我发现它会更新。然后,对于控制结构,您可能需要通过比较输入的 ASCII 值来考虑 switch 语句。 (65 = 'A', 66 = 'B' 等等。如果你不考虑小写作为输入。)

srand()的参考
rand() returns same number
C++ reference : srand()

rand()的参考
C++ reference : rand()

编辑:

既然你已经说过你所暴露的控制结构只是 upto if,那么如果你这样做就足够了

if(input == 'A')
    //do stuff here
else if(input == 'B')
    //do stuff here
...continue the pattern
else //should it fail from A to E
    std::cout << "*";

【讨论】:

  • "rand() 将始终在运行时生成相同的数字,无论您调用多少次" - 这是不是正确的。除非以srand(some entropic value)the default seed of 1 will be usedrand() 为种子,否则将生成相同的数字序列,而不是相同的数字。任何坚硬的种子都是如此。不只是 1.
  • 谢谢!你给了我在互联网上找到的最有帮助的答案。我必须弄清楚在哪里将srand() 合并到代码中,这样每次程序运行时它都会给我一组不同的数字,但你的回答很有帮助。
【解决方案2】:

mod 操作员是您的朋友。 生成从低到高的随机数:rand()%(high-low+1)+low

【讨论】:

  • rand() considered harmful。 “当你需要一个随机数时,不要打电话给rand(),尤其不要说rand() % 100!”
  • 如果mod操作员是你的朋友,&lt;random&gt;是承诺永远爱你的超级模特。
  • @BoBTFish 这是关于 CS1 的第二类...我不会让他们担心技术问题。
  • @TomerW 为什么现在学错了,以后只能学对了?简化是一种有效的教学技巧。教完全错误的东西不是。
  • @BoBTFish 倾向于同意,顺便说一句,在 C++11 URNG 之前有合理的选择吗?
【解决方案3】:

获取ab之间的随机整数 Num=rand( ) %(b-a+1)+a

【讨论】:

  • 这应该是一条评论
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多