随机函数,以给定的概率生成1或0

时间:2013-04-27 19:02:24

标签: c++ random probability

我需要实现一个函数int myRand(double p) 返回1或0.返回1的概率为p,而返回0的概率为1- p

3 个答案:

答案 0 :(得分:3)

您可以使用std::discrete_distribution

#include <random>

double p = 0.25;

std::random_device rd;
std::mt19937 gen(rd());
std::discrete_distribution<> distrib({ 1-p, p });
                                    // ^^^  ^- probability for 1
                                    //  | probability for 0
std::cout << distrib(gen);

答案 1 :(得分:2)

Generate a random double in the range [0..1],然后执行此操作:

int randomWithProb(double p) {
    double rndDouble = (double)rand() / RAND_MAX;
    return rndDouble > p;
}

答案 2 :(得分:0)

您只需要从[0,1]生成随机浮点数。如果它是&gt; p则返回1,否则返回0。