matlab产生均值为48随机数,生成满足一定条件的随机数

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

1   #include "stdio.h"

2   double rnd1(double *r)

3   { int m;

4     double s,u,v,p;

5     s=65536.0; u=2053.0; v=13849.0;

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

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

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

9     return(p);

10   }

11   main()

12   { int i;

13     double r;

14     r=5.0;

15     printf("\n");

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

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

18     printf("\n");

19     getch();

20   }

3、功能:

产生0到1之间均匀分布的一个随机数序列

例:产生50个0到1之间均匀分布的一个随机数序列,r的初值取1.0

1

2

3   #include "stdio.h"

4   void rnds(r,p,n)

5   double *r,p[];

6   int n;

7   { int i,m;

8     double s,u,v;

9     s=65536.0; u=2053.0; v=13849.0;

10     for (i=0; i<=n-1; i++)

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

12         *r=*r-m*s; p[i]=*r/s;

13       }

14     return;

15   }

16   main()

17   { int i,j;

18     double p[50],r;

19     r=1.0;

20     rnds(&r,p,50);

21     printf("\n");

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

23       { for (j=0; j<=4; j++)

24           printf("%10.7lf  ",p[5*i+j]);

25         printf("\n");

26       }

27     printf("\n");

28     getch();

29   }

30

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值