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

random function which generates 1 or 0 with given probability

本文关键字:随机 函数 概率      更新时间:2023-10-16

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

您可以使用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);

[0..1]范围内生成一个随机的double,然后执行以下操作:

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

您只需要从[0,1]生成一个随机的浮点数。如果>p则返回1,否则返回0。