编写一个c语言程序,在1~41之间随机抽取20个不重复的数字。
时间: 2023-06-02 14:07:46 浏览: 136
产生20个不重复的随机数的代码
好的,我可以帮你解决这个问题。下面是C语言程序的代码实现:
```
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 20 //抽取数量为20
int main()
{
int a[41], i = 1, j, k; //定义数组a、计数器i、随机数j和循环变量k
srand((unsigned)time(NULL)); //设置随机数种子
for (i = 1; i <= 41; i++) //初始化数组a
a[i] = i;
for (i = 1; i <= N; i++) //循环抽取N个不重复的数
{
j = rand() % (41 - i) + 1; //生成随机数j
printf("%d ", a[j]); //输出抽中的数字
for (k = j; k < 41; k++) //去掉数组a[j],将数组a[j+1]~a[41]左移
a[k] = a[k + 1];
}
printf("\n"); //输出换行符,美化输出结果
system("pause");
return 0;
}
```
程序的功能是在1~41之间随机抽取不重复的20个数字,并输出这20个数字。程序中采用Fisher–Yates随机置乱算法来实现抽取,抽取时将已抽中的数字从数组中剔除,保证抽取到的数字不重复。
阅读全文