基础类 一个随机数函数和产生随机数的类 |
Vc里只提供了一个rand()随机数取0--32767(我刚学VC不久,很多东西都不懂,也许还有其他的随机函数) 我写的random(): 全局变量: unsigned long holdrand1; void srand1(unsigned long seed) //seed should be equal a random //for example:=(unsigned)time( NULL ) { holdrand1 = seed; } unsigned long random(unsigned long Range) //0<=return value<Range { holdrand1 = (holdrand1 * 73279687L + 302460951874L) >> 2; return holdrand1 % Range; } //--------------------------------------------------------------- 产生随机数的类: #include<stdlib.h> UINT rnd(UINT r){ return UINT((double)rand()/(RAND_MAX+1)*r); } class Rnd{ public: Rnd(UINT a){if(a==0||a==1){MessageBox(NULL,"类Rnd参数错误!","内部错误",0);exit(1);}n=a;nn=a;m=new UINT[a];for(b=0;b<n;b++)m[b]=b;srand((unsigned)GetTickCount());} ~Rnd(){delete[] m;} UINT rd(){ if(n==0){for(b=0;b<nn;b++)m[b]=b;n=nn;} b=rnd(n); if(c==m[b]){if(b>0)b--;else b++;} c=m[b]; m[b]=m[n-1]; n--; return c; } private: UINT n,nn,b,c; UINT *m; };
优快云 VC编程经验总结
|