【发布时间】:2021-12-30 00:52:35
【问题描述】:
我想知道在一定数量的对象上分配某些东西的最佳方式是什么。我正在尝试创建一个扫雷游戏,其中有一定数量的瓷砖和一定数量的地雷,但我不确定在一定范围内随机分配数字的最佳方法。
具体来说,如果我有一个包含 400 个对象的向量,那么随机分配一个布尔属性以使这 400 个对象中有 30 个为真而其余为假的最佳方法是什么?
struct Tile {
bool mine;
// ...
};
std::vector<Tile> v(400);
我在想可能类似于概率系统的东西,我的一组图块绝对必须具有该属性,我可以创建所有对象的编号向量并滚动随机数,然后从向量中删除这些对象,直到设置了地雷的数量。
【问题讨论】:
-
您可以创建一个包含 400 个布尔值的数组,将前 30 个设置为 true,其余设置为 false,对数组进行打乱,然后按顺序使用打乱后的值。
-
我添加了一些代码以使您的要求更清楚。如果您认为这改变了意图,或者您可以改进它,请随时对其进行编辑。
标签: c++ object random boolean distribution