每当我尝试运行此代码时,它返回10到19之间的数字,但我打算返回20到30之间的范围。我认为模式将是:%min + range但是看起来没用尽管%50 + 50转回50到99之间的数字,但任何其他最小值不起作用。为什么呢?
^\d+-\d+$
var isValid = /^\d+-\d+$/.test(inputString);
答案 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。