适用于任何需要概率的游戏; 没几行代码;
主要是生成一个概率数组 , 接下去每次随机一个数, 去这个数组里选取对应的值
#include <random>
//从概率数组中 拿个索引, 对应概率数组
int get_rate_index(long double * arr,int len ,long double rand_num){
for(int i = 0 ; i < len ; ++i){
if(rand_num > arr[i] && rand_num <= arr[i+1])
return i+1;
}
}
int main(){
//4个情况 , 老虎机 4个 可以赢的情况
long double basic_rate = 1.0 / 4;
//8倍 , 任意中1个
long any = 8;
//28倍 , 3个一样的 , 58,88 的颜色不一样
long green = 28;
long red = 58;
long yellow = 88;
//概率
long double any_rate = basic_rate / any;
long double green_rate = basic_rate/green;
long double red_rate = basic_rate/red;
long double yellow_rate = basic_rate/yellow;
// 没中的概率
long double other = 1 - any_rate - green_rate - red_rate - yellow_rate;
lon