8个数字随机出现一次

1-8 8个数字随机出现一次,且只出现一次,如何实现?(不限语言,只求方法)

可以用生成随机数函数 random(7)+1 生成随机数并保存在数组array[] 中,先生成第一个数array[0],然后生成第二个数,并用第二个数跟第一个数比较看是否相同,如果相同重新生成一个随机数继续跟前面数比较,如仍相同重新生成否则保存在array[1]中,如此重复,只到数组中由八个数结束。等会附上一小段代码。你可以试一下:

#include <stdlib.h>
#define N 8
main()
{
int array[N],i,j;
randomize();
clrscr();
for(i=0;i<N;i++)
{
lable:array[i]=random(N)+1;
for(j=0;j<i;j++)
{if(array[j]==array[i])goto lable;}
}
for(i=0;i<N;i++)
printf("%-4d",array[i]);
getch();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-18
大概说一下,中间有些算法可以优化,就是这么个意思
8个数放在一个数组a里,可以按顺序放好。
另准备一空数组b放结果。

用0-7产生随机数,作为数组a下标,找到这个数,把这个数移到b中,并从a中删掉这个数
用0-6产生随机数。。。
如此循环。
第2个回答  2008-10-18
IT专业的人知道.