为什么rand()%20 + 10继续在c ++中返回青少年?

时间:2016-07-02 07:12:19

标签: c++

每当我尝试运行此代码时,它返回10到19之间的数字,但我打算返回20到30之间的范围。我认为模式将是:%min + range但是看起来没用尽管%50 + 50转回50到99之间的数字,但任何其他最小值不起作用。为什么呢?

^\d+-\d+$

var isValid = /^\d+-\d+$/.test(inputString);

3 个答案:

答案 0 :(得分:3)

这是因为你让它落后了。它是%range + min。模数函数返回除法的余数。
所以说你要执行一个随机数mod 20.结果将在0到19的范围内。如果我在模数上加了一个数字'num',我会得到一个范围<登记/> 0 + num到19 + num

答案 1 :(得分:2)

模数运算符%在除以数字时得到余数。在这种情况下,rand()%20返回0到19之间的值。向此处添加10将得到介于10和29之间的值。

如果你想要一个20到30之间的值,那么rand()%10会给你1到9之间的数字,然后你可以加20来获得20到29之间的数字 包括的。

总结:rand() % 10 + 20会在[20,30)中返回一个数字。

答案 2 :(得分:1)

#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;
}

上面的代码用于生成20到30(包括两者)之间的100个随机值。您要求的模式是:%range + min。对于%50 + 50的情况,返回正确的答案,因为此范围= min = 50。