作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Possible Duplicate:
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;
}
最佳答案
您已使用 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。
关于c - 如何在 C 中将变量分配给 rand() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14353611/
我是一名优秀的程序员,十分优秀!