声明: 仅个人小记
效果展示
连续运行三次的结果
代码部分
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
/*
功能:
产生不重复的随机数
输入: a[] 一维数组, length 指定数组a的长度
输出: a 中为0~length的所有值随机乱序存放
思想: 本来是按序放置的0~length数表,我们随出一个随机数作为交换次数,对该数表中数据进行交换
*/
void nonredundantRandomNumber(int a[], int length) // 不重复的随机数
{
int i, k, t, times;
for (i = 0; i < length; ++ i)
a[i] = i;
times = rand()%length; // 这个随机值指定交换次数
for (i = 0; i < times; i ++) {
k = rand()%length;
t = a[i];
a[i] = a[k];
a[k] = t;
}
return;
}
int main(void)
{
int a[N];
srand(time(NULL));
nonredundantRandomNumber(a,N);
// 下面是输出显示结果
for (int i = 0; i < N; ++ i) {
printf("%2d ",a[i]);
if ((i+1)%10 == 0) printf("\n");
}
return 0;
}