#define MAX_RANDOM 1000
/*
**randf--generate a random float number
** base: the minimum float number of generated
** up: the maximum float number of generated
*/
static inline float
randf(float base, float up){
return (rand() % (int)((up-base) * MAX_RANDOM)) / (float)MAX_RANDOM + base;
}
如果想生成真正的随机数,调用randf前把时间作为srand()的种子。
#include
srand( (unsigned)time(NULL) );
附:关于浮点数比较的一个问题。
在浮点数比较是,我使用了如下代码:
const float EPSINON = 0.00001;
#define _GT(a, b) ( ((a) - (b)) > EPSINON ) /*a大于b*/
#define _LT(a, b) ( ((a) - (b)) < -EPSINON ) /*a小于b*/
#define _GE(a, b) ( ((a) - (b)) >= -EPSINON ) /*a大于等于b*/
#define _LE(a, b) ( ((a) - (b)) <= EPSINON ) /*a小于等于b*/
#define _EQ(a, b) ( (((a) -(b)) >= -EPSINON) && (((a) - (b)) <= EPSINON) ) /*a等于b*/
两处红的和两处蓝的为什么符号是相反的? 我以为没有关系,但是,改成统一符号时确出现错误。还请高人指点一下!
阅读(3006) | 评论(0) | 转发(0) |