在为游戏生成树的上下文中考虑这段人为设计的代码:
// Pretend there's some code somewhere that associates the 0-100 number to its corresponding size.
enum class TreeSize : uint32_t
{
Small, // 0-9
Medium, // 10-60
Large,// 61-90
ExtraLarge, // 91-100
};
// returns tree size
int GenerateTree()
{
std::random_device rd;
std::mt19937_64 mt(rd());
std::uniform_int_distribution<int32_t> dist(0, 100);
return dist(s_mt);
}
假设我想生成 1000 棵树,但绑定到特定比例的树大小。例如:
我该怎么做? 有现成的东西可以做到这一点吗? 当然,这是很多人以前不得不面对的问题,是吗?
std::discrete_distribution
,在这里你可以分别指定每个项目的概率权重:
int GenerateTree()
{
std::random_device rd;
std::mt19937_64 mt(rd());
std::discrete_distribution<int32_t> dist({15, 30, 40, 15});
return dist(s_mt);
}