【问题标题】:How to find the frequency of a range of random numbers?如何找到一系列随机数的频率?
【发布时间】:2015-01-03 11:37:03
【问题描述】:

我是 C++ 的初学者,我正在尝试从 100 个数字的随机数生成器中找到数字 (1-6) 的频率。我可以使用的唯一命令是 rand、srand、cin、cout、loops 和 if else。是否可以仅使用这些命令创建一个显示频率的程序?谢谢。

【问题讨论】:

  • 听起来很可能。你有一个大致的想法或算法吗?您是否尝试过将其放入代码中?你在哪里卡住了?
  • 如果您可以使用std::map,您可以执行类似于我在answer here 中所做的操作。我刚刚使用了来自random header 的 cppreferences 页面的修改示例,它生成了一些漂亮的文本直方图。

标签: c++ random numbers generator frequency


【解决方案1】:

考虑给你的每个命令的功能:

srand(int):为你的随机数生成器提供种子;你可以给它一个简单的数字(比如 0 或 1,或 7),这样每次运行代码时,随机数生成器都会有相同的输出(有利于检查你的进度。很难判断你是否要去如果您每次都得到不同的输入,那么就朝着正确的方向前进)

rand():为你生成一个介于 0 和 RAND_MAX 之间的随机数。要生成一定范围内的数字,请查看此线程(How does modulus and rand() work?)。

cin:从用户那里读取输入。

cout: 输出到控制台(例如 cout

loops:你的两个主要循环 while 和 for。 While 循环仅在满足某个条件之前进行; for 循环允许您创建临时变量、检查条件和递增变量。提示:当您确切知道要运行多少次迭代时,for 循环会更好。

if/else:允许您检查给定条件,如果该条件结果为真,则执行一个代码块,如果为假,则转到另一个代码块(来自 else)。请注意,您还可以建立 else if (即 if(condition) { // code } else if(condition) { // code } )。

现在回头看看这个问题,我们需要什么来解决这个问题? 1.一种产生随机数的方法(rand) 2. 一种控制我们生成多少数字的方法(循环) 3.一种检查我们生成的数字是否为某个数字的方法(if/else) 4. 一种存储每个数字(变量)的频率量的方法 5. 一种将我们的发现输出到屏幕的方法(cout)

我希望我没有透露太多信息 - 从这里开始,您可以在整个程序中形成准确的逻辑规范(即,要定义哪些变量、如何执行循环、if/else 怎么样使用,以及如何以及输出什么)。

【讨论】:

    【解决方案2】:

    您可以使用std::map<int, int>,其中first 是随机数,second 是计数。

    因此频率将是计数/总数。

    【讨论】:

    • 如果您只是跟踪数字 1-6,这可能有点过头了。 int[6] 就足够了。
    • 一个 int[6] 将用作直方图:int histogram[6]。您首先将数组设置为零,然后对于每个数字 1 到 6,您将增加数组中的一个值: histogram[number-1]++ 。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 2015-04-16
    • 2022-12-04
    • 2020-04-12
    相关资源
    最近更新 更多