C++ 为什么rand()%20+;10继续用c+返回青少年+;?
每当我尝试运行这段代码时,它也会返回10到19之间的数字,但我打算返回20到30之间的数字。我原以为模式是:%min+范围,但它似乎没用,尽管%50+50返回50到99之间的数字,但任何其他最小值都不起作用。为什么?C++ 为什么rand()%20+;10继续用c+返回青少年+;?,c++,C++,每当我尝试运行这段代码时,它也会返回10到19之间的数字,但我打算返回20到30之间的数字。我原以为模式是:%min+范围,但它似乎没用,尽管%50+50返回50到99之间的数字,但任何其他最小值都不起作用。为什么? #include<iostream> #include<cstdlib> #include<ctime> using namespace std; int main() { srand(time(0)); for(int i=1
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main()
{
srand(time(0));
for(int i=1; i<100; i++)
{
cout<<rand()%20+10<<endl;
}
return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
srand(时间(0));
对于(int i=1;i这是因为它是向后的。它是%range+min。模函数返回除法的剩余部分。
因此,假设您执行一个随机数mod 20。结果将在0到19之间。如果我太过向模中添加一个数字'num',我将得到一个范围
0+num到19+num这是因为它是向后的。它是%range+min。模函数返回除法的剩余部分。
因此,假设您要执行一个随机数mod 20。结果将在0到19之间。如果我在模中添加一个数字'num',我将得到一个范围
0+num到19+num模运算符%
在除以一个数字时获取余数。在这种情况下,rand()%20
返回一个从0到19的值。将10加上该值,得到一个介于10和29之间(含10和29)的值
如果您想要一个介于20和30之间的值,执行rand()%10
将得到一个从1到9的数字,然后您可以将20相加得到一个从20到29的数字
包括在内
总之:rand()%10+20
在[20,30)
中返回一个数字,模运算符%
除以一个数字后得到余数。在这种情况下,rand()%20
返回一个从0到19的值。将10加上该值,得到一个介于10和29之间的值
如果您想要一个介于20和30之间的值,执行rand()%10
将得到一个从1到9的数字,然后您可以将20相加得到一个从20到29的数字
包括在内
总之:rand()%10+20
在[20,30]
中返回一个数字\include
#包括
#包括
使用名称空间std;
int main(){
srand(时间(空));
对于(int i=0;i#包括
#包括
#包括
使用名称空间std;
int main(){
srand(时间(空));
对于(int i=0;iTryrand()%10+20
这并不能回答您的问题,但请查看您是否担心随机数的分布。请尝试rand()%10+20
这并不能回答你的问题,但看看你是否担心你的随机数分布。非常感谢。这非常有帮助!非常感谢。这非常有帮助!我投票支持这个答案,因为教授原则比记住范围和最小值更好…我投票支持这个答案,因为它更好o教授原则,而不是记住范围和方向。。。
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main(){
srand(time(NULL));
for(int i=0; i<100; i++)
cout<<rand()%11+20<<endl;
return 0;
}