- 论坛徽章:
- 0
|
以下程序的功能是产生随机数,但是我怎么看都觉得不像是产生随机数,而是产生一个特定的数经一些四则运算后得到的数。请大家帮我看看,解释下这个程序。谢谢!
- #include<climits>; //定义INT_MAX和ULONG _MAX常量
- #include<ctime>; //定义time()函数
- #include<iomanip>; //定义setw()函数
- #include<iostream>; //定义cout对象
- using namespace std;
- class Random
- {
- public:
- Random(long seed=0){_seed=(seed?seed:time(NULL));}
- void seed(long seed=0){_seed=(seed?seed:time(NULL);}
- int integer(){return _next();}
- int integer(int min,int max){return min+_next()%(max-min+1);}
- double real(){return double(_next())/double(INT _MAX);}
- private:
- unsigned long _seed;
- void _randomize()
- {_seed=(314159265*_seed+13579)%ULONG _MAX;}
- int _next()
- {
- int iterations=_seed%3;
- for(int i=0;i<=iterations;i++)_randomize();
- return int(_seed/2);
- }
- };
- int main()
- {
- Random random;
- for(int i=1;i<=10;i++)
- cout setw(16)<<random.integer()<<setw(6)
- <<random.integer(1,6)
- <<setw(12) <<random.real()<<endl;
- }
复制代码
我觉得这里的time()函数是产生两个时间的差值,不能算是随机数阿!
对不对啊? |
|