- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的教授要求我们编写一个程序:
使用循环模拟一对骰子的滚动一千次(这里我认为 for 循环会很有用)。
对于每次迭代,循环需要计算每个值从 2 到 12 的次数(这里我认为 if/else 语句适用)
当循环结束时,必须显示每个值(从 2 到 12)出现的次数。
他的作业结构如下:
他希望我们使用一个进入 1000 次 for 循环的函数,每次函数调用调用另一个函数两次(以模拟掷出两个骰子)。
让我解释一下我设法放下的东西
//
// main.cpp
// RollingDice
#include <iostream>
#include <ctime>
using namespace std;
int roll();
int rollDice();
int main(int argc, const char * argv[])
{
for (int i = 1; i < 1000; i++)
{
rollDice(); //This is the function that is supposed to call the roll();
//function two times. This makes sense to me that TWO DICE
//are being rolled 1000 times.
}
int result; //These two statements was where I was just hoping for something
//to work. I put these variable statements outside of the for
//loop because I was thinking that the int rollDice(); function
//definition(below) wouldn't know how to use it otherwise. I
//know that doesn't make sense, but I just can't explain why.
result = rollDice();
}
int roll()
{ //This function was provided to us by my professor.
static bool randomInitialized = false;
int points;
if (!randomInitialized)
{
srand((unsigned int) time(NULL));
randomInitialized = true;
}
points = (rand() % 6) + 1;
return points;
}
int rollDice()
{ //This I wrote myself. I'm imagining this is how you call a function twice.
//The return statement in this function was my attempt of returning the sum
//of the values of the two dice.
roll();
roll();
return result;
}
除了程序的这一部分不工作之外,我还有另一个问题是确定一种方法来为每个出现的值设置一个计数器(但是,我想象程序的那部分属于 for 循环。那是关于我所知道的一切。)。从昨天开始,我就对这个节目进行了深入的思考。我今天又回来了,希望有一个新的想法能解决它,但我仍在挣扎。非常感谢任何帮助。
最佳答案
表达式 roll()
的计算结果为一个数字。要添加数字,我们使用 +
。要返回一个值,我们使用 return
。
将它们放在一起,我们得到一个简单的函数来对两个卷求和
int rollDice() { return roll() + roll(); }
如果你有一个数字序列,并且数字都靠得很近并且从 0 开始,标准库的 SequenceContainer 之一s 是整个序列的合适持有人。
这里的东西是特定 throw 的计数。我们预先确切知道可用值(包括 2 - 12),因此 std::array
是合适的。任何至少可以容纳 1000 的整数值都适用于计数。我在这里选择 std::size_t
。
#include <array>
#include <iostream>
int main()
{
std::array<std::size_t, 13> counts {};
这会给我们 13 个 0,从位置 0 开始
for (std::size_t i = 0; i < 1000; ++i)
{
++counts[rollDice()];
我们用 rollDice 选择哪个数字,并用它来选择要递增的计数
}
for (std::size_t i = 2; i < 13; ++i)
{
我们现在可以遍历我们的结果,显示计数
std::cout << "The count for " << i << " is " << counts[i] << std::endl;
}
}
关于c++ - 掷 2 个骰子 1000 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51256820/
我刚刚向自己介绍了 WebGL 和 Threejs,作为开始,我正在尝试创建一个 3D 骰子。我已经到了创建立方体的地步,但我真的不知道如何在立方体的面上放置数字,我能找到的只是如何更改颜色。我已经查
这就是我现在得到的...... var max = 7; var min = 1; $('#dice').click(function() { random = Math.floor(Math.r
我是 Unity 的新手,一直在尝试掷骰子。我遇到了一组教程,它们允许我创建一个 3d 模具(模具使用 Rigidbody 和 Mesh Collider)并编写脚本使其在空格键上滚动,如下所示: 骰
我是 JavaScript 新手,我需要一些想法/帮助来了解如何使我的脚本正常工作。所以我们的想法是,你掷两个骰子,通过按下“掷骰子”按钮然后按下重置按钮来重置整个 HTML 中的所有内容。 所以事情
我正在尝试构建一个掷骰子游戏,如果计算机自动掷出一对骰子,并且如果 cpu 掷出 7 或 11,则用户获胜。然而,如果用户掷出 2、3 或 12,他们将自动失败。如果用户滚动任何其他数字(4、5、6、
背景 如此处所述http://www.ericharshbarger.org/dice/#gofirst_4d12 , “先走”骰子是一组四个骰子,每个都有唯一的编号,因此: 任何两个或更多骰子都不会
我是一名优秀的程序员,十分优秀!