产生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    }

 

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 

 

转载于:https://www.cnblogs.com/cpoint/archive/2010/12/16/1908700.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值