产生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
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 }
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
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
作者:cpoint
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步