注意,下面的代码并没有完全写出来,我已经制作了一副牌并洗了牌
我不明白为什么我没有得到两个随机数,我尝试播种这些数字,但它似乎无法正常工作。 我想要的是每次打印出脸部/西装时,它应该是两种不同的数字/颜色。我的错误在哪里?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct card{
const int *face;
const char *suit;
};
typedef struct card Card;
void dealing(const Card * const wDeck);
void shuffle(Card * const wDeck);
int main(){
srand(time(NULL));
shuffle(deck);
dealing(deck);
return(0);
}
void dealing(Card * const wDeck)
{
int j;
j = rand() % 52;
srand(time(NULL));
printf("%d of %s\n", wDeck[j].face, wDeck[j].suit);
printf("%d of %s\n", wDeck[j].face, wDeck[j].suit);
}
void shuffle(Card * const wDeck)
{
int i;
int j;
Card temp;
for (i = 0; i <= 51; i++) {
j = rand() % 52;
temp = wDeck[i];
wDeck[i] = wDeck[j];
wDeck[j] = temp;
}
}
最佳答案
从 dealing()
中删除对 srand()
的调用。每次程序调用(在 main()
中)调用一次 srand()
就足够了。
void dealing(Card * const wDeck)
{
int j;
j = rand() % 52;
// srand(time(NULL)); /* no, no, no.
/* The PRNG has already been
/* seeded inside main() */
printf("%d of %s\n", wDeck[j].face, wDeck[j].suit);
printf("%d of %s\n", wDeck[j].face, wDeck[j].suit);
}
关于c - 当我播种数字时,兰德仍然无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34418166/