上网查了下C++生成一定范围内随机数的方法,一般都是下面这种:
for (int t = 0; t < 100; ++t){
int target = rand() % (max-min+1) + min;
cout<<target<<endl;
}
然后发现输出为:
都是以163开头的。。。
再看下Python的效果。
代码:
for t in range(100):
target = numpy.random.randint(LIM_LOW, LIM_HIGH)
loss_limits = [target - LIM_LOW, LIM_HIGH - target]
print(target)
输出:
这个随机性就好很多。我想了一下上面C++代码在区间值下限比较小的时候效果会比较好,但是我这个问题的下限到了16300000+,离2147483647只差100倍了。
所以我决定先求个0-1的随机浮点数,然后映射到目标区间上,代码如下:
for (int t = 0; t < 100; ++t){
float num;
num = (rand() % 1000) * 0.001;
int target = num * (max-min+1) + min;
cout << target << endl;
}
结果:
可以看到随机效果已经和numpy.random.randint(low,high)类似了。
先这么替换着,以后可能发现更好的方法也说不定。。