c语言中如何生成1个0到1的随机数

Python012

c语言中如何生成1个0到1的随机数,第1张

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之间随机数的式子了.

方法一:

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.0 u=2053.0 v=13849.0

      m=(int)(*r/s) *r=*r-m*s

      *r=u*(*r)+v m=(int)(*r/s)

      *r=*r-m*s p=*r/s

      return(p)

   }

   main()

   { int i

     double r

     r=5.0

     printf("\n")

     for (i=0 i<=9 i++)

        printf("%10.7lf\n",rnd1(&r))

     printf("\n")

     getch()

   }

方法二:

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之间随机数的式子了.

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之间随机数的式子了.