比较数组中的随机值
Comparing random values in an array
我是自学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索引)。
所以,如果你想知道有多少个5被滚动:
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]);
}
不过,我可能只是在生成数字的同时计算总和。
一种可能的思考方式是,当生成数字时,不要将数组中的每个不同索引视为单独的骰子,而是将每个索引视为滚动该索引的骰子数
例如,如果您有5个六边模具,并轧制2、2、4、5、6,则可能会有一个看起来像[0、2、0、1、1、1]的数组。然后,您可以在数组上迭代,寻找感兴趣的值来记录它们
当然,如果你需要知道哪个骰子掷了哪个值,那么这并没有多大帮助,而且对于每个骰子都有不同的边这样的事情来说,这也不是特别灵活
希望这能让你对如何处理这个问题有一个想法。
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 将随机生成的数字添加到数组 + 对这些数组求平均值
- C++具有随机计数的数组
- 从C++数组中选择一个随机元素
- 为什么我的 2d 数组的第二行从 RAM 中获取随机值?
- 该程序将.csv文件中的一系列单词放入数组中,然后随机生成句子.但它不起作用
- 为什么我的数组值会更新为随机值?
- 在 c++ 的 10x10 数组中生成特定数量的多个随机字符
- SFINAE - 检测类型 T 是指针、数组还是带有随机访问运算符的容器,以及给定的值类型
- 动态数组传递给 main 中用随机值填充的函数,返回值3221226356
- 选择随机字符串数组的排序
- 如何在 3x4 数组中随机 4 个不同的位置
- 字符数组中的十六进制导致写入套接字时出现随机字符
- 更快地访问 C++ 数组中的随机元素
- 在随机生成的数组中查找重复的连续数字
- 如何将 50 行和 50 列的二维数组编码为一个为元素随机分配星号的函数?
- 生成十六进制随机 16 字节数组
- 当 95% 情况下的值为 0 或 1 时,对非常大的数组进行随机访问的任何优化
- "Color Game" - 从数组 C++ 调用随机
- 如何使用数组制作随机分数生成器