gpt4 book ai didi

c++ - 掷 2 个骰子 1000 次

转载 作者:行者123 更新时间:2023-11-27 23:45:14 24 4
gpt4 key购买 nike

我的教授要求我们编写一个程序:

  1. 使用循环模拟一对骰子的滚动一千次(这里我认为 for 循环会很有用)。

  2. 对于每次迭代,循环需要计算每个值从 2 到 12 的次数(这里我认为 if/else 语句适用)

  3. 当循环结束时,必须显示每个值(从 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com