如何以指定的概率运行部分代码?

cod*_*bie 2 c++ random c++11

我有一个变量cnt,其值通过if/else如下语句检查:
如果cnt<=2,则调用func
Else if cnt > 2,然后调用func概率为P=3/(2*cnt).
如何在C++中实现基于概率的代码执行?

void func() {
    sendMsg();
}
Run Code Online (Sandbox Code Playgroud)

Ami*_*ory 6

使用类似的东西std::uniform_real:

#include <random>

std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<> dis(0, 1);

void func() {
    // Probability 0.3
    if(dis(gen) < 0.3)
        sendMsg();
}
Run Code Online (Sandbox Code Playgroud)