如何在C中创建函数,它会在集合参数之间生成随机数}(类型为double)?在许多语言中它只是
function randomnumber(min, max) {
return Math.random() * (max - min + 1) + min;
}
但是我没有找到任何关于c中的double类型的好解决方案。
答案 0 :(得分:1)
有几种方法。上面的答案1对于min是最好的,max是双倍的。要记住rand()
的重要一点是,它会返回0
和RAND_MAX
之间的随机整数。 RAND_MAX
至少2^15
,但在大多数系统2^31
上。如果min和max是整数且它们的差异小于RAND_MAX
,那么一个非常简单的方法是:
delta = max - min;
r = rand() % delta + min;
答案 1 :(得分:0)
#include <stdlib.h> /* rand(), srand(), RAND_MAX */
double randd(double min, double max) {
int r = rand();
double delta = max - min; /* assume max > min */
double tmp = r / (RAND_MAX + 1.0); /* generate up to but excluding max */
return tmp * delta + min;
}