我的理解是,这会产生10到偏移量之间的随机数:
random = (rand() % 10) + offset;
偏移量增加了1,但从未超过10,但是当我运行此代码时,变量random被设置为大于10的数字。
有问题的代码:
#include "pch.h"
#include <cstdlib>
#include <Windows.h>
#include <iostream>
using namespace std;
void gen(int offset)
{
int random;
if (offset != 10)
{
random = (rand() % 10) + offset;
cout << "random should be between: " << 10 << " and " << offset << endl;
cout << "random: " << random << endl << endl;
Sleep(500);
gen(++offset);
}
}
int main()
{
srand(373);
gen(1);
cin.get();
}
和输出:
随机数应在10到1之间
随机:7
随机数应在10到2之间
随机:11
随机数应在10到3之间
随机:3
随机数应在10到4之间
随机:13
随机数应在10到5之间
随机:10
随机数应在10到6之间
随机:13
随机数应在10到7之间
随机:16
随机数应在10到8之间
随机:14
随机数应在10到9之间
随机:18
答案 0 :(得分:1)
(rand() % 10)
返回范围[0,9]的值,因此(rand() % 10) + offset
将返回范围[offset,offset + 9]的值。
如果您要返回[offset,10]范围内的值,则需要(rand() % (11 - offset)) + offset
来使偏移量小于11。
另外,您可能应该使用std::uniform_int_distribution来获取范围内的随机整数。
答案 1 :(得分:0)
l = [v for k,v in m.items() if k == "matches"]
glist = [i['gameId'] for d in l for i in d]
产生0到9之间的数字,然后将其添加到(rand() % 10)
第一次offset
产生6,您将其添加1。因此,{{1} }。第二次rand() % 10)
得到9,您在其中加上了2,即7
。