您的位置:首页 > 其它

产生随机概率的c方法

2013-01-30 11:27 295 查看
问题
1>0~5%
2>5%~60%
3>60%~100%

用rand()产生概率

c实现

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
// before use this srand must be invoked.
// probs must be ascending order and all of them should not greater than 1.
// n is the number of probs.
// returns the index of probs that the random result falls.
int random_section(float probs[], int n) {
double r = (float)rand()/RAND_MAX;
int i;
for (i = 0; i < n; i++) {
if (r < probs[i]) {
return i;
}
}
return n;
}
int main() {
srand((int)time(0));
float ps[] = {0.05, 0.6, 1};
int i;
int count[4] = {0};
for (i = 0; i < 100000; i++) {
int p = random_section(ps, 3);
count[p]++;
}
for (i = 0; i < 4; i++) {
printf("count[%d]=%d\n", i, count[i]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  随机概率