全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
4144 2
2012-02-25
各位大侠,我想请问一个小程序问题:生成10个服从0-1间均匀分布的随机数,但要求10个随机数的和要小于1!请问如何用matlab编程啊?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-2-25 10:41:09
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-8-23 05:57: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
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群