C++生成多米诺骨牌的随机数
C++ Generate random numbers for dominoes
我的任务包括编写几个类,这些类将协同工作,为用户随机排序28个多米诺骨牌并显示它们。到目前为止,我遇到的主要问题只是在没有任何复制的情况下制造多米诺骨牌。如果你熟悉多米诺骨牌,你就会知道每一半要么是空白的,要么有1-6个点。基本上,我会有一个由28个独特结构(多米诺骨牌)组成的动态数组,但我只是坚持生成这些多米诺骨牌,而没有相同的多米诺骨牌。我曾想过使用FOR循环来遍历并在每个结构中赋值,但我认为必须有一些更简单的方法。
这就是我目前所拥有的;我知道这不多,但我不能也不想在没有正确处理的情况下继续使用排序和显示的编写方法。
class CDominoes{
public:
struct Data
{
int top;
int bottom;
Data()
{
top = 0;
bottom = 0;
}
} domino[28];
//methods to assign spots to halves
};
最简单的解决方案是生成,然后洗牌。要生成,您需要避免浪费时间生成重复项。例如,(4,5)与(5,4)相同,因此不希望同时生成这两个。这意味着您的内部循环应该始终从外部循环的当前值开始。这样做,您将永远不会重复组合。这里有一个例子:
int main () {
for( int t = 0; t <= 6; ++t ) {
for( int b = t; b <= 6; ++b ) {
std::cout << "(" << t << "," << b << ")n";
}
}
return 0;
}
在本例中,我们认为"0"与空白多米诺骨牌相同。
接下来,不要打印这些,而是将它们放入一个随机访问容器(如std::array
或std::vector
)中,然后使用std::shuffle
打乱容器。
相关文章:
- C++多个实例的随机数生成器组种子中增强
- C++ 简单的掷骰子 - 如何返回多个不同的随机数
- 多米诺骨牌计划。我不知道如何将我的矢量拉到空白中以打印出来
- 用具有不同范围的均匀分布的随机数填充多维矩阵
- 如何生成多个随机数?
- 在random_device和seed_seq之间做出决定,为多个随机数序列生成种子
- 使用具有唯一随机数的结构数组创建多个对象
- C++生成多个随机数而不循环
- 使用mt19937_64生成随机数,用于多线程蒙特卡罗模拟
- 使用多个线程生成随机数时的瓶颈
- 在多维数组中生成唯一的随机数C++
- 生成唯一的多个随机数
- C 11多个随机数引擎适配器
- 如何为多个模拟引脚编写功能?(阿杜伊诺)
- 具有随机数总和的多线程执行时间
- C++随机数生成器调用了多次
- 使用 2x1 和 1x2 多米诺骨牌平铺具有禁止位置的 2xN 网格的方法数量
- 计算网格的多米诺骨牌覆盖物的数量
- C++生成多米诺骨牌的随机数
- 最长的多米诺骨牌链/序列