计算方式:
抽奖。每次有2%几率抽中6星人物,如果超过50抽都没抽到,则下一次(第51次)抽中概率+2%,以此类推
#include <iostream> #include <stdlib.h> #include <time.h> #include <windows.h> int rand_2(void); using namespace std; int main(int argc, char *argv[]) { int a; //得到的随机数 int count = 0; //抽到6星的次数 int flg = 0; //标志位,表示距离上一次抽到6星的抽数 srand((unsigned)time(NULL)); //随机种子 for(int i = 0; i < 99999999; ++i) { if(flg <= 50) //50抽以内都是2%几率 { a = rand_2(); if(a < 20) //表示抽到了 计数+1 标志位清零 { count++; flg = 0; } else //没抽到,标志位++ { flg++; } } else if(flg > 50) //超过50抽之后每抽一次多增加2% { a = rand_2(); if(a < 20 + (flg-50)*20) //增加2% { count++; flg = 0; } else { flg++; } } } cout<<"count is :"<<count<<endl; } //生成1000以内的随机整数 int rand_2() { int a ; a = rand()%1000; return a; }
总共抽了99999999次,出了2875438次6星
所以,平均34.7抽可抽中一次6星