hdm2968:
请问怎样生成一个介于两个值之间的真正随机数?如果我有高低两个数50,-50,怎样产生它们间的随机数,我试过很多方法,要么就是不能生成小数,要么就是两边密,中间小(即靠近50和-50的数较多,靠近0的数较少),能不能平均生成? ----------------------------------------------------- whb9633
晕,不可能生成真正的随机数,现在的CPU没有这样的能力。如果是一般生成线性分布的随机数的话,很简单。用C++这样写: template<typename T> T FlipRand(const T& min , const T& max) { return min + ((T)1 - (T)rand()/0xffffffff) * max ; }
------------------------------------------------------------------ chesskiller
用这个方法你可以TRACE下,以后的数绝对没规律了 从计算机算法理论上来说是没有绝对的真随机的数的 只有逼近随机数 要生成在一定范围内的随机数比如(0-4.0)用下面的代码 ((FLOAT)rand()/(FLOAT)RAND_MAX) * 4.00f
------------------------------------------------------------------------
define me God
用这个方法你可以TRACE下,以后的数绝对没规律了 从计算机算法理论上来说是没有绝对的真随机的数的 只有逼近随机数 要生成在一定范围内的随机数比如(0-4.0)用下面的代码 ((FLOAT)rand()/(FLOAT)RAND_MAX) * 4.00f
that's right. 不过象接近真正的随机数,还要注意控制随机数种子的选取,若是在一个函数里连续地取随机数,因为以系统时间做种子的话(比如srand(timeGetTime());)会取到伪随机序列上较接近的数...
|