【发布时间】:2015-12-04 22:53:18
【问题描述】:
我编写了以下代码,以便从给定的单词数组中随机选择一个单词,而不选择两次相同的单词。 (我只想选择4个字)。在干运行程序并对其进行测试后,一切似乎都很有趣,并且没有遇到重复项,但是我想进行第二次验证,因为我是编程新手。
char words[10][10] = {"dog", "cat", "horse", "cow", "goat", "monkey", "elephant", "crow", "fish", "snake"};
void getRandomWords()
{
int i = 0, k = 0;
srand((unsigned)time(NULL));
n = rand() % 10;
checkRandom[k] = n;
k ++;
for (int j = 0; j < 10; j ++) {
printf("%c\n", words[n][j]);
}
do {
n = rand() % 10;
for (int t = 0; t < 4; t ++) {
if (checkRandom[t] == n) {
found = 1;
break;
}
else
found = 0;
}
if (found == 0) {
checkRandom[k] = n;
k ++;
for (int j = 0; j < 10; j ++) {
printf("%c\n", words[n][j]);
}
i++;
}
} while (i < 3);
}
【问题讨论】:
-
下面的洗牌算法提出了一个很好的观点:你没有生成伪随机数:你生成的是一个洗牌序列。真正的随机序列允许重复。