在C ++中获取Bernoulli分布式随机变量的最简单方法是什么?一世
我有一个非常数。
p从0开始,获得p+=0.01
,直到p=1
。 (" for" loop)我有这个想法:
声明int aray大小为100,用零进行。 evrey time p得到+0.01
,我将一个零改为" 1" ...并得到一个随机数%100。
答案 0 :(得分:3)
您应该使用现代C ++(如果可能,使用C ++ 11或更高版本)。你可以这样做:
#include <random>
#include <iostream>
int main()
{
std::random_device rd{}; // use to seed the rng
std::mt19937 rng{rd()}; // rng
double p = 0.2; // probability
std::bernoulli_distribution d(p);
// generate 5 runs
for(std::size_t i = 0; i < 5; ++i)
std::cout << d(rng) << " ";
}
答案 1 :(得分:1)
你可以得到0到1之间的随机数,并从中计算出bernoulli随机数
double p = 0.5;
double r = ((double) rand() / (RAND_MAX));
unsigned int br = 0;
if (r >= p)
br = 1;