gpt4 book ai didi

c++ - 掷骰子,2 个骰子,c++,意外结果

转载 作者:行者123 更新时间:2023-11-30 01:07:06 25 4
gpt4 key购买 nike

当掷 2 个六面骰子时,最常见的结果应该是 7,而 2 和 12 是最不常见的结果。

enter image description here

当我执行下面的代码时,数字 12 的出现频率很高,这是错误的。

#include <iostream>
#include <iomanip>
#include <random>
#include <ctime>
#include <array>
using namespace std;

int main() {

default_random_engine engine(static_cast<unsigned int>(time(0)));
uniform_int_distribution<unsigned int> randomInt(1, 6);

const size_t arraySize{11};
array<unsigned int, arraySize> frequency{};

for (unsigned int roll{1}; roll <= 36'000'000; ++roll){
++frequency[randomInt(engine) + randomInt(engine)];
}

cout << "Face" << setw(24) << "Frequency" << endl;

for (size_t sum{2}; sum <= 12; ++sum) {
cout << setw(4) << sum << setw(24) << frequency[sum] << endl;
}
}

下面是几个结果:

Face               Frequency
2 1001328
3 1997709
4 2999938
5 4000842
6 4998363
7 5998813
8 5003114
9 4001434
10 3000068
11 1999298
12 5197605

Face Frequency
2 1001328
3 1997709
4 2999938
5 4000842
6 4998363
7 5998813
8 5003114
9 4001434
10 3000068
11 1999298
12 5197605

为什么要计算这么多 12?

最佳答案

尝试将 arraySize 设置为 13,而不是 11。

对于 11,你很幸运没有得到核心转储。

arraySize 设置为 11,frequency[11]frequency[12] 被初始化为未定义的值。

设置为 13 我明白了

Face               Frequency
2 999735
3 1999765
4 2997658
5 3998991
6 5003045
7 6002570
8 4999055
9 3999659
10 3000068
11 1999566
12 999888

设置为 11 我明白了

Face               Frequency
2 998866
3 1999702
4 3001777
5 3999977
6 4999754
7 5999024
8 5000215
9 4000132
10 2999408
11 793621638
12 1000941

关于c++ - 掷骰子,2 个骰子,c++,意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45044725/

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