每次从未处理的数据集合中随机取出一个数字,然后把该数字放在数组的首部, 即数组首部存放的是已经处理过的数字 。 这是一个原地打乱顺序的算法,即可从有限集合获取不重复的随机值。
以下是c语言实现的代码和测试用例:
#include#include #define max 20 int GetRandomValue(int *arr,int *pos,int size) { int value,temp; if(*pos >= size) { *pos = 0; } value = rand()%(size-*pos)+*pos; temp = arr[*pos]; arr[*pos] = arr[value]; arr[value] = temp; return arr[(*pos)++]; } int main() { int i; int pos = 0; int table[max]; for(i = 0;i



