一个随机数函数和产生随机数的类

来源:互联网 发布:淘宝店怎么参加聚划算 编辑:程序博客网 时间:2024/05/21 20:07
基础类
一个随机数函数和产生随机数的类 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;
};

 


CSDN VC编程经验总结

 

 
原创粉丝点击