C++中具有概率分布的向量的随机生成器
Random generator from vector with probability distribution in C++
我有和这里相同的问题分布式概率随机数生成器,但在c++中。我知道如何实现它,但我的问题是——这是在当前版本的c++中功能性构建的吗?
为了完整起见,我将回答这个问题。
这个分布可以使用C++11的随机数生成库生成。这首先需要播种一个随机数引擎(这里我使用std::mt19937
),然后将该引擎与std::discrete_distribution
随机数分布一起使用。
std::discrete_dstribution
的构造函数在权重序列上采用迭代器范围,或者采用权重的initializer_list
。然后根据权重序列中的相应索引对生成的数字进行加权。也就是说,如果{10, 5, 1}
是权重,则0
将以10/(10 + 5 + 1) = 0.625
的概率产生,依此类推
以下代码演示了另一个问题的解决方案:
std::random_device device;
std::mt19937 engine(device()); // Seed the random number engine
std::discrete_distribution<> dist({150, 40, 15, 3}); // Create the distribution
// Now generate values with:
std::cout << (dist(engine) + 1) << std::endl;
相关文章:
- 如果不初始化结构中的向量,它会自动为空还是具有随机内存位置的值?
- 指向用随机指针归档的其他类对象的指针的c++向量
- 我怎样才能在不重复的情况下随机迭代向量的每个元素
- 从长(且合理)稀疏向量中选择随机元素的最有效方法是什么?
- C++ 生成随机向量
- 随机访问元组向量中的元组值
- 将一个随机的字符序列和int序列解析为单独的向量
- 从C++向量中随机选取
- C++线程的向量在连接时随机崩溃
- C 从向量的子集返回一个随机值
- 使用随机值初始化 2D 向量
- 多次随机向量后的读取访问冲突
- 随机采样C++中具有权重的元组的向量
- 如何使用 std::shuffle 以随机顺序对具有唯一指针的向量进行洗牌
- 从另一个向量制作随机配对向量
- 在C++中生成字符串的随机向量
- 在matlab上生成有限制的随机向量时出现问题
- 每次调用一个新的随机向量
- 标准多元正态随机向量使用Boost::random
- 生成带有 t 个随机向量的位向量