问题
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; }