0

可能重复:
生成范围内的随机数?

我正在尝试这样做,以便在执行代码时,我可以在命令提示符下键入最大数以重新定义最大数并在 0 和新的最大数之间生成一个新的随机数。

我做对了吗?

#include <stdlib.h>
#include <stdio.h>
#include <time.h>


int main()
{
    int randomnumber ;
    int max;
    srand( time(NULL) );
    scanf("Enter total number of students %d",&max);
    randomnumber=rand()% 30;
    printf("This is your random number\n %d",randomnumber);
    getchar();
    return 0;
}
4

1 回答 1

1

您已经使用scanf向用户发送消息,但您需要使用printf它。尝试:

printf("%s", "Enter total number of students: ");
scanf("%d",&max);

然后,您可以将 更改%30%max给用户一个介于 0 和 之间的数字max - 1

randomnumber=rand()% max;

正如评论者所说,使用模来减少范围rand()不会给你一个好的随机分布。另外,一定要检查max是否大于0,否则会报错。

如果您想知道为什么max此时会收到大量数据,那是因为您没有max显式初始化。对于 C 和 C++,这意味着其中可能存在垃圾数据。它不像 Java 或 C# 那样int自动初始化为 0。

于 2013-01-16T07:55:30.853 回答