利用rand之类的伪随机发生器,会有重复,而这个在游戏里随机事件是不允许的,现在就简单实现一个小范围的“真随机数”:
#include <iostream>
#include <string>
#include <locale>
#include <random>
#include <set>
using namespace std;
int main(void) {
static std::default_random_engine m_Generator;
std::uniform_int_distribution<int> distribution(0, 10);
set<int> lSet;
for (int i = 0; i < 10; ++i){
do {
int a = distribution(m_Generator);
if (lSet.find(a) == lSet.end()){
printf("%d\n", a);
lSet.insert(a);
break;
}
} while (true);
}
}
可以看到比较 暴力,哈哈