免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1060 | 回复: 1
打印 上一主题 下一主题

[函数] 这个程序是产生随机数函数吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-17 13:43 |只看该作者 |倒序浏览
以下程序的功能是产生随机数,但是我怎么看都觉得不像是产生随机数,而是产生一个特定的数经一些四则运算后得到的数。请大家帮我看看,解释下这个程序。谢谢!
  1. #include<climits>;       //定义INT_MAX和ULONG _MAX常量
  2. #include<ctime>;                  //定义time()函数
  3. #include<iomanip>;              //定义setw()函数
  4. #include<iostream>;            //定义cout对象

  5. using namespace std;

  6. class Random
  7. {
  8.   public:
  9.       Random(long seed=0){_seed=(seed?seed:time(NULL));}
  10.      void seed(long seed=0){_seed=(seed?seed:time(NULL);}
  11.      int integer(){return _next();}
  12.      int integer(int min,int max){return min+_next()%(max-min+1);}
  13.     double real(){return double(_next())/double(INT _MAX);}
  14. private:
  15.     unsigned long _seed;
  16.    void _randomize()
  17.     {_seed=(314159265*_seed+13579)%ULONG _MAX;}
  18.    int _next()
  19.    {
  20.      int iterations=_seed%3;
  21.      for(int i=0;i<=iterations;i++)_randomize();
  22.      return int(_seed/2);
  23.    }
  24. };

  25. int main()
  26. {
  27.    Random random;
  28.    for(int i=1;i<=10;i++)
  29.        cout setw(16)<<random.integer()<<setw(6)
  30.                             <<random.integer(1,6)
  31.                             <<setw(12) <<random.real()<<endl;
  32. }
复制代码

我觉得这里的time()函数是产生两个时间的差值,不能算是随机数阿!
对不对啊?

论坛徽章:
0
2 [报告]
发表于 2004-04-17 21:56 |只看该作者

这个程序是产生随机数函数吗?

谁帮我解释下好吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP