我需要实现一个函数int myRand(double p)
返回1或0.返回1
的概率为p
,而返回0
的概率为1- p
答案 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。