设计一个算法,要求在20个数字中(0-19)随机选取十个数字,但是这十个数字不能重复.

请写出具体实现过程,谢谢

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#include<string.h>

bool f[20];

int main()

{

 memset(f,true,sizeof(f));

 srand(unsigned(time(0)));

 for (int i=1;i<=10;i++)

 {

  bool find=false;

  int r;

  while (!find)

  {

   int x=rand()%20;

   find=f[x];

   r=x;

  }

  f[r]=false;

  printf("%d\n",r);

 }

 return 0;

}

[您的采纳是我们前进的不竭动力]

追问

您好,能用基础点的方法吗? 我现在学的是比较基础的C语言,挺多关键字不懂什么意思。谢谢啊

追答

这是我能想到的最基础的了
memset(f,true,sizeof(f)); 这是填充操作,把f全部置为true
srand(unsigned(time(0)));生成随机数种子,这个你不用管他是什么意思,只要知道用随机数时写一个就行了.
int x=rand()%20;生成随机数 %20就是生成20以内的随机数

这是我能想到的最基础的了
memset(f,true,sizeof(f)); 这是填充操作,把f全部置为true
srand(unsigned(time(0)));生成随机数种子,这个你不用管他是什么意思,只要知道用随机数时写一个就行了.
int x=rand()%20;生成随机数 %20就是生成20以内的随机数

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-14
我用BASIC写吧,上面有人用C写的。
dim i as integer
dim j as integer
dim h as integer
dim num(10) as integer '十个数字
for i=0 to 9
num(i)=-1
loop:
j=rnd()*20
for h=0 to 9
if num(h)=j then
goto loop
end if
next h
num(i)=j
next i本回答被网友采纳

RAND函数如何实现20个数字里面随机选取10个
要使用RANDBETWEEN()在20个数字里面随机显示10个不重复有点复杂了,其实使用RAND来做一个辅助列,在配合RANK来显示就简单了。辅助列构建20个随机数,使用公式:=RAND()*RAND()基本上避免了重复数值出现的情况,然后在显示列对辅助列进行排名就能获得1-20这些数,然后加上2000就是你需要的结果了。=RANK...

功能:把20个随机数存入一个数组,然后输出该数组中的 最大值。
1你是要 int fun(int list[],int size) { ……… } 函数的代码是吧 int fun(int list[],int size) { int i,j=0; for(i=0;i<size;i++) \/\/找出list中值最大的项,获取其下标 if(list[i]>list[j]) j=i; return j; } --- 你复制出来的代码,多出本该有空格的地方,空格不见了...

0-9十个数字.随机选取3个数.这3个数要在45678这5个数随机选3个不可重复...
1\/12

vb生成10个随机数,且在1~50之间
k = Int(Rnd * 50 + 1) '获取1~50的整数 Loop a(i) = k Next For i = 0 To 9 strText = strText & " " & a(i) Next Label1.AutoSize = True Label1.Caption = strText End Sub Private Function Repeat(a() As Integer, Num As Integer, Index As Integer) As Boolean '参数:a()...

有0~9十个数字,随机选取一个,选中哪个的机率大?
既然是随机选取,那概率当然是一样大的啦,皆是十分之一(1\/10)。就好像你抛个硬币,掉下来只能出现正面或反面两种情况(特殊意外除外,这个我们不予以考虑吧,哈?)

一个C语言算法,关于筛选重复数据
{ int a[20]={1,2,3,2,3,4,5,6,7,2,3,5,6,8,1,9,11,22,11,55},i,j,m=1,b[20],s=0;b[0]=a[0];for(i=0;i<=19;i++){ for(j=0;j<=m;j++)if(a[i]==b[j])s=1;if(s==0)b[m++]=a[i];s=0;} for(i=0;i<=m-1;i++)printf("%d ",b[i...

...任意一个正整数,输出该数的2进制码。随机给出10个整数对函数进行验证...
算法流程:1、获得输入a,其中a要求是正整数(进行一次异常判断),字符数组c的长度可以设置为20,最后一位为\\0(如果有字符串的库,这样可以按照字符串直接输出了),索引设置为18(因为数组索引从0开始,除去最后一个\\0最长索引号是18)(可以表示2^19次方已经基本足够,也可以再大,看需要);2、...

请问这个题怎么解答?
19.任意改变某三位数数码顺序所得之数与原数之和能否为999?说明理由. 20.设有一张8行、8列的方格纸,随便把其中32个方格涂上黑色,剩下的32个方格涂上白色.下面对涂了色的方格纸施行“操作”,每次操作是把任意横行或者竖列上的各个方格同时改变颜色.问能否最终得到恰有一个黑色方格的方格纸?

c语言中输入20个数排列大小顺序
int a[20]; int i,j,t; printf("请输入20个数字,以回车间隔:"); for(i=0;i<20;i++) scanf("%d",&a[i]); printf("\\n"); for(j=0;j<20;j++) for(i=0;i<20-j;i++) if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a...

Python可以做哪些有趣的事情?
一、制作游戏 Python可以用来制作各种类型的游戏,从简单的文字游戏到复杂的图形游戏都可以实现。使用Pygame等游戏开发库,你可以编写自己的游戏逻辑、设计游戏关卡和角色,并为游戏增加声音和图形效果。通过制作游戏,你不仅可以锻炼编程能力,还可以享受游戏创作的乐趣。二、创建艺术作品 Python可以用来创建各种...

相似回答