#include<stdlib.h>
#include <vector>
class Random
{
public:
Random(int size) {
this->size = 0;
seeds.resize(size);
}
int random() {
int x, i;
if (seeds.size() == 0) return 0;
if (size == 0) { //第一次运行或返回了所有值之后需重新进行初始化操作
for (i = 0; i < (int)seeds.size(); i++) {
seeds[i] = i;
}
size = (int)seeds.size();
}
i = rand() % size;//取模操作,控制返回值取值范围
x = seeds[i];//返回对应位置的值
seeds[i] = seeds[--size];//移除对应位置的值,同时缩小下次返回值取值区间
return x;
}
protected:
int size;//记录当前返回值取值区间
std::vector<int> seeds;
};
均匀分布的随机数生成器,转自KCP测试源码
猜你喜欢
转载自blog.csdn.net/xuyuanwang19931014/article/details/89844536
今日推荐
周排行