gpt4 book ai didi

c++ - 比较数组中的随机值

转载 作者:行者123 更新时间:2023-11-28 03:02:06 25 4
gpt4 key购买 nike

我是自学 C++ 的,所以如果答案真的很明显,请原谅我!

我正在为几年前想出的骰子游戏编写代码,我需要能够比较结果的值。我的想法是,如果我创建一个数组并将 5 个骰子中的每一个分配给数组中的一个点,那么编写几行代码来检查是否有任何部分相等应该是一件简单的事情。

这就是诀窍 - 我需要能够检查对、三元组、四元组、五元组和双对。我完全不知道该怎么做,而且我似乎无法在阵列上找到任何可以帮助我的东西。使用数组是解决此问题的最佳方法,还是有更简单的方法?或者,我是否必须简单地写出每个比较组合,然后继续下一步?

这是我目前拥有的(删节的)代码 - 不多,但这是我目前正在使用的代码。

#include <time.h>
#include <iostream>
using namespace std;

int d1; //die 1
int d2; //die 2
int d3; //die 3
int d4; //die 4
int d5; //die 5
int dice [5]; //all 5 dice

int sum; //the sum of all the dice

int main()
{
srand(time(NULL));

d1 = rand() % 6 + 1;
d2 = rand() % 6 + 1;
d3 = rand() % 6 + 1;
d4 = rand() % 6 + 1;
d5 = rand() % 6 + 1;
sum = d1 + d2 + d3 + d4 + d5;

if (dice [] = dice [])
cout << endl << dice [];

return 0;
}

显然,dice [] 不起作用。我正在尝试构建我想要的逻辑,但我做空了。我可以使用结构吗?我正在尝试思考任何事情,但是当涉及到实际比较不同的数字以查看它们是否相等时,我一片空白。我觉得必须有某种方式来输入 if (dice [x.1] = dice [x.2]),其中 dice [x.1]代表五个数字中的任何一个,dice [x.2] 是另一个。

最佳答案

d1 = rand() % 6 + 1;
d2 = rand() % 6 + 1;
d3 = rand() % 6 + 1;
d4 = rand() % 6 + 1;
d5 = rand() % 6 + 1;

这应该是这样的:

for (int i=0; i<5; ++i)
d[i] = rand() % 6 + 1;

然后,要计算每个数字滚动的次数,请尝试如下操作:

int dieFaces[6] = {0};
for(int i=0; i<5; ++i) {
dieFaces[d[i]-1]++;
}

但如果滚动顺序很重要,我们甚至只需要 d[] 数组。如果你只需要掷骰子的值,我们可以将两个循环组合成这样:

int dieFaces[6] = {0};
for(int i=0; i<5; ++i) {
int face = rand() % 6;
dieFaces[face]++;
}

无论哪种方式,在您填充 dieFaces 之后,您都可以通过访问比您感兴趣的面少 1 的元素(数组是 0-索引)。

所以,如果您想知道掷了多少个五:

int fivesRolled = dieFaces[4];

如果你想检查是否有任何三元组被滚动:

bool triplesRolled = false;
for(int i = 0; i<6; ++i) {
if(dieFaces[i] == 3) {
triplesRolled = true;
break;
}
}

计算骰子的总和:

int sum = 0;
for(int i = 0; i<6; ++i) {
sum += ((i+1) * dieFaces[i]);
}

不过,我可能会在生成数字的同时计算总和。

关于c++ - 比较数组中的随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20532579/

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