我试图在代码执行时这样做,我可以输入最大数字 命令提示符重新定义最大数字并在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;
}
答案 0 :(得分:1)
您已使用scanf
向用户发送消息,但您需要使用printf
。尝试:
printf("%s", "Enter total number of students: ");
scanf("%d",&max);
然后,您可以将%30
更改为%max
,为用户提供0到max - 1
之间的数字。
randomnumber=rand()% max;
正如评论者所说,使用modulo来缩小rand()
的范围不会给你一个好的随机分布。另外,请务必检查max是否大于0,否则会出错。
如果您想知道为什么您目前在max
获得了大量号码,那是因为您没有明确初始化max
。使用C和C ++,这意味着那里可能存在垃圾数据。它不像Java或C#,int
自动初始化为0。