参考
C++ 产生不重复随机数的方法;
randperm() 整数的随机排列。
/** ***************************************************************************
* @brief 生成min到max之间的不重复的随机整数序列
* 指针长度为max-nin+1
* @param[in] min 最小值
* @param[in] max 最大值
* @return int*
* ************************************************************************** */
int *randperm(int min,int max)
{
if (max<min)
{
std::swap(max,min);
}
int n = max- min+1;
int *p = new int[max-min+1];
for (size_t i = 0; i < n; i++)
{
p[i]=min+i;
}
for (int i = n-1; i >=1; i--)
{
std::swap(p[i],p[rand()%i]);
}
return p;
}
网友评论