c语言中随机函数怎么取1~2x之间的数

c语言中随机函数怎么取1~2x之间的数?
要求用随机函数取任意一1~2x之间的数。
x可输入。
问题解决后可加分。

#include <stdlib.h>
这里面的一个方法就是这样用的。

a= rand()%100 这就表示随机取到0--100之间的整数

所以,1-2x
那就

a= 1 + rand()%(2*x);
就OK了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-03-27
加多少?
我考虑考虑
//在下面的函数中可以实现产生一个在一个区间之内的平均分布的随机数,精度是4位小数。
double AverageRandom(double min,double max)
{
int minInteger = (int)(min*10000);
int maxInteger = (int)(max*10000);
int randInteger = rand()*rand();
int diffInteger = maxInteger - minInteger;
int resultInteger = randInteger % diffInteger + minInteger;
return resultInteger/10000.0;
}
main()
{
double x;
scanf("%f",&x);
double num = AverageRandom(1,2*x);
printf...
....
//略
}
第2个回答  2008-03-27
以上的这些方法并不能保证所得到的随机数是1~2x的均匀分布,因为rand()的最大值为未必能被2x整除,所以会有问题!而且如果2x大于rand()的最大值的话,那么大于那部分的数值将无法取到。

to 自由的菜鸟: 你用rand()*rand()你考虑过没有,所得到的结果并不是一个均匀的分布,至少结果里面素数产生的概率就很小,而且0产生的概率很大(任意一次产生的随机数是0,那么结果就是0),而1产生的概率明显小于0的概率(只有两次产生的随机数都为1时,结果才为1),大于rand()最大值的素数根本不会产生。
第3个回答  2008-03-26
我以为你是要1到二十几之间的随机数呢,
a=rand()%(2*10+x)+1
a就是1-2x之间的随机数了

如果是1-2x之间的就是
rand()%2x +1
第4个回答  2008-03-26
rand()%(2*x)+1