【问题标题】:Bernoulli random variables in c++ [duplicate]C ++中的伯努利随机变量[重复]
【发布时间】:2015-05-08 16:17:41
【问题描述】:

在 C++ 中获取伯努利分布随机变量的最简单方法是什么?我 我有一个非常量 p。 p 从 0 开始,得到 p+=0.01 ,直到 p=1。 (“for”循环)我有这个想法:

声明大小为 100 的 int 数组,用零填充。每次 p 得到+0.01 时,我将一个零更改为“1”...并得到一个随机数%100。

好吃吗? 谢谢

【问题讨论】:

标签: c++ random


【解决方案1】:

您应该使用现代 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) << " ";
}

【讨论】:

    【解决方案2】:

    你可以得到一个0到1之间的随机数,并从中计算伯努利随机数

    double p = 0.5;
    double r = ((double) rand() / (RAND_MAX));
    unsigned int br = 0;
    if (r >= p) 
       br = 1;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 2011-05-23
      • 2017-06-10
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多