前言
自己做了一个非等概率的随机算法的封装,然后后面人的可以借用。
/*
probability是概率,最好是两位小数,然后返回1的概率是probability,返回0的概率是1-probability
如果是三元组或者是多元组,多返回几个值就可以了
*/
int NotEqualProbability(float probability){
int gap = (int)(probability * 100);
int temp = rand() % 100;
if (temp >= 0 && temp < gap){
return 1;
}
else{
return 0;
}
}
在大数据情况下的验证
自己写了一个程序,验证在生成1000000个数时,是否按照概率0.75左右生成的,验证结果是正确的,证明成立,所以这里就完事了,大家以后借用就可以了
#include <iostream>
#include <string>
#include <map>
#include <fstream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int NotEqualProbability(float probability){
int gap = (int)(probability * 100);
int temp = rand() % 100;
if (temp >= 0 && temp < gap){
return 1;
}
else{
return 0;
}
}
int main()
{
srand((unsigned)time(NULL));
int count = 0;
for (int i = 0; i < 10000000; i++){
if (NotEqualProbability(0.75)==1){
count++;
}
}
cout << "概率为:" <<count<<" -----" <<((float)count) / 10000000;
system("pause");
return 0;
}