注意,在使用随机函数 rand() 之前,必须先初始化随机种子
srand((unsigned)time(NULL));
1、产生一个随机整数,包含于 [min,max]
int get_random_num(int min, int max) { return rand() % (max - min + 1) + min; }
2、产生一个指定精度的随机浮点数,包含于 [min,max],精度为保留小数点后 precision 位。
float get_random_num(float _min, float _max, int precision) { int precision_num = pow(10,precision); int min = (int)(_min*precision_num); int max = (int)(_max*precision_num); int random = get_random_num(min, max); return random / (float)precision_num; }
3、从集合中,随机取出指定数量的元素。
//从vector<T>中随机取出一些元素,组装成新的vector返回 std::vector<T> get_random_from_vector(std::vector<T> in_vect, int count) { std::vector<T> out_vect; int size = in_vect.size(); for(int i = 0; i < count; i++) { int index = get_random_num(0,size - 1 - i); out_vect.push_back(in_vect[index]); in_vect[index] = in_vect[size - 1 - i]; } return out_vect; }