伯努利在c ++中的随机变量

时间:2015-05-08 16:17:42

标签: c++ random

在C ++中获取Bernoulli分布式随机变量的最简单方法是什么?一世 我有一个非常数。 p从0开始,获得p+=0.01,直到p=1。 (" for" loop)我有这个想法:

声明int aray大小为100,用零进行。 evrey time p得到+0.01,我将一个零改为" 1" ...并得到一个随机数%100。

好吗? 感谢

2 个答案:

答案 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;