怎么用R语言生成0-1之间的随机数?

2024-04-29

1. 怎么用R语言生成0-1之间的随机数?

1、第一步,调用runif()函数,这时函数内的值为6,生成6个随机数,如下图所示:

2、第二步,再次调用runif()函数,runif(6)又生成6个随机数,如下图所示:

3、第三步,使用set.seed(12345)设置种子元素,然后调用runif(6),查看数据情况,如下图所示:

4、第四步,再次调用set.seed()函数,这时多加了一个6,如下图所示:

5、第五步,再次调用runif(6)函数,查看生成的6个随机数的不同,如下图所示:

6、第六步,再次调用set.seed()函数,这时是从1到9;然后调用runif()函数,如下图所示:

怎么用R语言生成0-1之间的随机数?

2. 如何用C语言产生0到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.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之间随机数的式子了.