如何用C语言产生0到1之间的随机数?

Python014

如何用C语言产生0到1之间的随机数?,第1张

方法一:1、功能:产生0到1之间均匀分布的一个随机数2、方法说明:设m=216,产生产生0到1之间均匀分布的一个随机数的计算公式如下:ri=mod(2053ri-1+13849,m),i=1,2,3……pi=ri/m例:连续产生10个0到1之间均匀分布的一个随机数 。r的初值取5.0 #include "stdio.h"double rnd1(double *r){ int m double s,u,v,p s=65536.0u=2053.0v=13849.0 m=(int)(*r/s)*r=*r-m*s *r=u*(*r)+vm=(int)(*r/s) *r=*r-m*sp=*r/s return(p) } main() { int idouble rr=5.0printf("\n")for (i=0i<=9i++)printf("%10.7lf\n",rnd1(&r))printf("\n")getch() }方法二:floatb=rand()/(RAND_MAX+1.0)printf("%f\n",b)注释:stdlib.h头文件中有宏#defineRAND_MAX0x7fff rand()产生一个0到0x7ffff即0到32767之间的随机数 rand()/(RAND_MAX+1.0)就等于一个0到1之间的小数了,因为rand()最大是32767最小是0,再除以32768就是一个0到1之间的小数(不能等于1),再乘以10就是一个0到10之间的数了(不等于10).最后再加1,就成了一个求1到10之间随机数的式子了.

float b=rand()/(RAND_MAX+1.0)

printf("%f\n",b)

注释:

stdlib.h头文件中有宏#define RAND_MAX 0x7fff

rand()产生一个0到0x7ffff即0到32767之间的随机数

rand()/(RAND_MAX+1.0)就等于一个0到1之间的小数了,因为rand()最大是32767最小是0,再除以32768就是一个0到1之间的小数(不能等于1),再乘以10就是一个0到10之间的数了(不等于10).最后再加1,就成了一个求1到10之间随机数的式子了.