求助一道抽签程序

来源:百度知道 编辑:UC知道 时间:2024/06/18 23:54:18
论坛最近要打比赛,64个人淘汰赛制,我想拿C语言编一个抽签程序,也就是一个1到64的数组随机排列,但是自己遍了几次全部错成鬼了,无奈上来请教各位高手谁能帮忙做好,谢谢
1L,我程序里有这一段,但是好象老是溢出,2L的程序没有剔除已选过数字吧,3L,我题目就是要把一个含有数字1到64的数组里的数字随机排列

补充:
楼主你根本没看明白我的算法,保证不会出现重复数字
我的算法是这样的:先把1~64排序写在一个数列中,然后遍历一次,每次都随机找个位置跟它交换,这样就能达到产生随机排列的效果
这是一种很常用的产生随机排列的算法,很基础很简单的程序,不会有错的
不信你就自己跑跑看,看看结果是不是有重复出现咯~~~
我知道你理解的是另外一种算法,随机产生一个数,然后判断是否出现过再填进数组,我的算法时间复杂度是O(n),是一种比你所理解的算法效率更高的产生随机序列算法,好好学习啦~
=====================================

楼上baiddd的程序是错的
楼主要的是随机数,你的程序能产生随机吗?
一般是要用rand()来产生随机数的
下面是我的程序,楼主可以跑跑看,产生随机的1到64排列数组

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main()
{
char num[64];
int i;
int a,tmp;
for (i=0; i<64; i++) num[i]=i+1;
srand(time(0));
for (i=0; i<64; i++)
{
a=rand()%64;
tmp=num[i];
num[i]=num[a];
num[a]=tmp;
}
for (i=0; i<64; i++) printf("%d ",num[i]);
printf("\n");
return 0;
}

void Cit (int num)
{
int i;
if (num<r)
{