我正在尝试实施加权随机数.我现在只是把头靠在墙上,无法解决这个问题.
在我的项目(德州扑克手牌范围,主观全权证券分析)中,我正在使用Boost的随机函数.所以,假设我想选择1到3之间的随机数(所以要么是1,2或3).Boost的mersenne twister发电机就像这样的魅力.但是,我希望选择加权,例如:
1 (weight: 90)
2 (weight: 56)
3 (weight: 4)Run Code Online (Sandbox Code Playgroud)
Boost是否具有某种功能?
我有 3 个分类稀有度,概率是这样的
class S has 10% probability
class A has 30% probability
class B has 60% probability
Run Code Online (Sandbox Code Playgroud)
所以我这样编码
class S has 10% probability
class A has 30% probability
class B has 60% probability
Run Code Online (Sandbox Code Playgroud)
我的客人的结果是非常正确的(cmiiw)
B
A
B
B
S
B
A
S
B
A
B
Run Code Online (Sandbox Code Playgroud)
但当我应该添加更多类别并将 S 类别概率更改为 1% 时,我变得很困惑
池现在变成
class S has 1% probability
class A has 29% probability
class B has 30% probability
class C has 40% probability
Run Code Online (Sandbox Code Playgroud)
我不确定我pool之前应该创建类似池的变量,因为 1% 是 1/10 不是整数。
急需帮助,谢谢!