zoukankan      html  css  js  c++  java
  • 产生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 
    作者:cpoint
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    redis应用场景之文章投票设计思路
    Redis存储的5种数据结构
    v+=e 不等价于 v=v+e
    WebMagic
    指针函数和函数指针的区别
    为什么说StringBuilder不安全?
    sql注入
    Autowired报错处理
    SpringBoot入门最简单的一个项目示例
    MVC中Cookie的用法(二)---CookieHelper
  • 原文地址:https://www.cnblogs.com/cpoint/p/1908700.html
Copyright © 2011-2022 走看看