假设函数返回整数:
int r = rand100();
while (r > 90) {
r = rand100();
}
return 1 + (r - 1) % 30;
Run Code Online (Sandbox Code Playgroud)
当%运营商意味着模.
为了在我们均匀分布100个输入数字时均匀分布30个输出数字,我们能做的最好是将3个输入数字映射到一个输出数字.必须丢弃剩余的10个输入.
我们多久平均一次调用rand100?1次90%2次9%3次0.9%......
平均值为1.111111