随机数产生原理及应用(再续二)

10 篇文章 0 订阅

  在网上找到了一个产生随机数的函数,没有种子。直接就可以用,但有个坏处,就是每次运行结果都一样。

  程序如下:

  unsigned int Random32(void) {  
     
    static const unsigned long x[55] = {  
      1410651636UL, 3012776752UL, 3497475623UL, 2892145026UL, 1571949714UL,  
      3253082284UL, 3489895018UL, 387949491UL, 2597396737UL, 1981903553UL,  
      3160251843UL, 129444464UL, 1851443344UL, 4156445905UL, 224604922UL,  
      1455067070UL, 3953493484UL, 1460937157UL, 2528362617UL, 317430674UL,  
      3229354360UL, 117491133UL, 832845075UL, 1961600170UL, 1321557429UL,  
      747750121UL, 545747446UL, 810476036UL, 503334515UL, 4088144633UL,  
      2824216555UL, 3738252341UL, 3493754131UL, 3672533954UL, 29494241UL,  
      1180928407UL, 4213624418UL, 33062851UL, 3221315737UL, 1145213552UL,  
      2957984897UL, 4078668503UL, 2262661702UL, 65478801UL, 2527208841UL,  
      1960622036UL, 315685891UL, 1196037864UL, 804614524UL, 1421733266UL,  
      2017105031UL, 3882325900UL, 810735053UL, 384606609UL, 2393861397UL };  
    static int init = 1;  
    static unsigned long y[55];  
    static int j, k;  
    unsigned long ul;  
   
    if (init)  
    {  
      int i;  
     
      init = 0;  
      for (i = 0; i < 55; i++) y[i] = x[i];  
      j = 24 - 1;  
      k = 55 - 1;  
    }  
   
    ul = (y[k] += y[j]);  
    if (--j < 0) j = 55 - 1;  
    if (--k < 0) k = 55 - 1;  
    return((unsigned int)ul);  

 

我把结果给截屏了。如下:

                                                           

 

    生成了10万个数,居然没有循环出现。还是不错的。但不知道它的设计原理是什么。前面那一段X数组还真了解它的意义。看来还得继续学习啊。

   就写到这里吧。。。。。

  

   欢迎大家到我空间留言。。。。^_^

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值