如何在C语言中使用带有范围的rand()函数。

9 浏览
0 Comments

如何在C语言中使用带有范围的rand()函数。

可能重复:

在C中,如何从rand()函数获取特定范围的数字?

如何生成在范围内的随机数?

我在如何使用rand()函数并为该随机数指定范围方面遇到了困难。我需要打印出介于67.00和99.99之间的随机数。

这是我尝试过的代码,但失败了...

#include 
#include 
int main(void)
{
    int x = rand();
    if(x>=67.00)
    if(x<=99.99)
          printf("%d\n",x);
        else
        printf("不在范围内");
}   

0
0 Comments

问题的原因是,使用rand()函数生成的随机数可能不在指定的范围内。为了解决这个问题,可以通过强制生成的随机数在指定范围内。

解决方法是,使用以下代码来生成在指定范围内的随机数:

int HIGH = 100;
int LOW = 67;
int rnd = LOW + (rand() % (HIGH-LOW));

这样生成的rnd的值将在LOW和HIGH-1之间,包括LOW和HIGH-1。

如果不想强制生成的随机数在范围内,可以将条件修改为:

if(x>=67.00 && x<=99.99)

然而,这个解决方法只适用于整数,对于浮点数则不适用。可以将数值改为6700和10000。

如果不想强制生成的随机数在范围内,还有其他的替代方法吗?是的,可以查看最新的编辑。

下面是经过编辑的代码,同时也会得到相同的输出"not in range",这是因为随机数没有正确设置种子:

#include 
#include 
int main(void)
{
	int x = rand();
	if(x>=67.00 && x<=99.99)
		printf("%d\n",x);
	else
		printf("not in range");
}

0