这几天编程,要产生一个随机队列,且队列中的每个值都不一样。其实现方式如下:
int Static_Que[5]; //数组元素的个数可以自己定义
int sRand_Que[5]; //产生的随机队列,队列中每个值都不一样
void TVacancy::GenThesaQue(int num)
{
int i=0,d=0;
int num_tmp;
int rand_a,rand_temp;
num_tmp = num;
srand((unsigned)time(NULL));
for(i=0;i {
Static_Que[i] = i;
}
for(;num_tmp>0;num_tmp--)
{
if(num_tmp == num)
{
rand_a = rand()% num_tmp; //以系统时钟作为随机种子
rand_temp = rand_a;
sRand_Que[d++] = Static_Que[rand_a];
rand_a++;
for(;rand_a Static_Que[rand_a-1] = Static_Que[rand_a];
}
else
{
srand(rand_temp); //以上一次产生的随机数作为种子,这样每次的种子就不一样了
rand_a = rand()%num_tmp;
rand_temp = rand_a;
sRand_Que[d++] = Static_Que[rand_a];
rand_a++;
for(;rand_a Static_Que[rand_a-1] = Static_Que[rand_a];
}
}
}
在实际应用时,只要传入参数num(<=你的数组元素的个数),调用这个函数,就可以产生你需要的数组里面前面num个数的随机排列。
阅读(599) | 评论(0) | 转发(0) |