急!!!用C语言编写按概率生成随机数!!!

来源:百度知道 编辑:UC知道 时间:2024/05/24 09:06:55
已知0-9这十个数出现的概率为0:0.07 1:0.14 2:0.07 3:0.14 4:0.1 5:0.1 6:0.8 7:0.9 8:0.13 9:0.8
用C语言编写生成0-9中随机数,只要生成一个即可!
一定要用C语言写!
谢谢!!

#include <stdio.h>
#include <stdlib.h>
void main(void)
{
float y[]={0.18,0.00,0.16,0.14,0.04,0.06,0.10,0.10,0.14, 0.08};
float s;
int i,j;
float rd_y;
int rd;
double r;
srand((unsigned)time(NULL));
s=y[0];
for(i=0;i<10;i++) if (y[i] > s) s = y[i];
for (j=0;j<12;j++)
{
r = ( (double)rand() / ((double)(RAND_MAX)+(double)(1)) );
rd_y = r * s;
r = ( (double)rand() / ((double)(RAND_MAX)+(double)(1)) );
rd = (int) (r * 10.0);
if (rd_y <= y[rd]) printf("%d ",rd);
}
printf("\n");
printf("\n");
getch();
}

基本想法:
2维取数
y 向 为 概率
x 向 为 0 - 9:
输出 落入xy 条形区的点子。

#include <stdio.h>
#include <stdlib.h>

void main(void)
{
float y[]={0.07,0.14,0.07,0.14,0.10,0.10,0.80,0.90,0.13, 0.80};
float s;
int i,j,k;
float rd_y;
int rd;