随机数问题!
如何能随机产生浮点数
----------------解决方案--------------------------------------------------------
double a=(double)rand()/(double)pow(10,rand()%4);
----------------解决方案--------------------------------------------------------
pow返回的应该就是double,那个double可不要
----------------解决方案--------------------------------------------------------
顶
----------------解决方案--------------------------------------------------------
K老大,你那范围是0-32767之间的随机数吧,是不是
----------------解决方案--------------------------------------------------------
const unsigned long maxshort=65536L;
class RandomNumber
{
private:
unsigned long randseed;
public:
RandomNumber(unsigned long s=0);
unsigned short Random(unsigned long n);
double fRandom(void);
};
RandomNumber::RandomNumber(unsigned long s)
{
if(s==0)
randseed=time(0);
else
randseed=s;
}
unsigned short RandomNumber::Random(unsigned long n)
{
randseed=multiplier*randseed+adder;
return (unsigned short)((randseed>>16)%n);
}
double RandomNumber::fRandom(void)
{
return Random(maxshort)/double(maxshort);
}
然后需要用随机数时写上
RandomNumber ***(变量名);
则***.fRandom()返回的就是一个0~1的double型随机数。
当然你要更大的自己再乘上放大倍数就可以了。
----------------解决方案--------------------------------------------------------
以下是引用论坛在2006-5-6 13:05:00的发言:
K老大,你那范围是0-32767之间的随机数吧,是不是
K老大,你那范围是0-32767之间的随机数吧,是不是
rand()的范围是-90~32767
----------------解决方案--------------------------------------------------------
0---0x7fff 之间,当然自己也可以设定
----------------解决方案--------------------------------------------------------
以下为头文件"stdlib.h" 中的部分
/*
* RAND_MAX is the maximum value that may be returned by rand.
* The minimum is zero.
*/
#define RAND_MAX 0x7FFF
----------------解决方案--------------------------------------------------------
ding
----------------解决方案--------------------------------------------------------