如何将变量赋给rand()在C?

时间:2013-01-16 07:53:26

标签: c srand

  

可能重复:
  Generate a random number within range?

我试图在代码执行时这样做,我可以输入最大数字 命令提示符重新定义最大数字并在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;
}

1 个答案:

答案 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。