C语言高手请进1

来源:百度知道 编辑:UC知道 时间:2024/06/28 15:58:10
#include <stdio.h>

void swap_ints(int *x, int *y);
void shuffle(int *a, int n);
void display(int *a, int n, int r);
int my_rand();

const char *cards[13] = {"2","3","4","5","6","7",
"8","9","10","J","Q","K","A"};
const char suits[4] = {'S','H','D','C'};
int main(void)
{ int a[52];
int i, j;
for ( i = 0; i < 52; ++i ) a[i] = i;
shuffle(a, 52);
for ( i = 0; i < 52; i += 13 ) {
for ( j = 0; j < 4; ++j ) {
printf("%c: ", suits[j]);
display(a+i, 13, j);
}
putchar('\n');
}
return 0;
}
int my_rand()
{
static unsigned long seed = 1;
seed = seed*1103515245+12345;
return (u

你的伪随机数的种子初始总是固定的,就是这个函数:
int my_rand()
{
static unsigned long seed = 1;
seed = seed*1103515245+12345;
return (unsigned int)(seed/65536) % 32768;
}

先加个头文件#include <time.h>
再将static unsigned long seed = 1;
改为static unsigned long seed = (unsigned long)time(0);
这样就不会出现同样的序列了

先不说内容,你的格式就很难看,要增加语句的可读性格式是十分重要的,自己要注意这方面的意识。

得改变随机数的种子,下面的方法可以做到:
srand(time());

最起码写点注释!