数组中的随机字符,不重复
Random characters from array without repetition
我尝试在 C 中创建一个程序,从数组中选择随机字符并将它们存储在第二个数组中但不重复。
代码:
int main() {
srand(time(NULL));
char characters[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I' };
char array[20];
int size = strlen(array);
int random, random_character;
for (int i = 0; i < 4; i++) {
random_character = rand() % 4;
random = characters[random_character];
array[i] = random;
for (int j = 0; j < 4; j++) {
if (array[i] == array[j]) {
array[i] = random;
}
}
}
for (int i = 0; i < 4; i++) {
printf("%c ", array[i]);
}
}
我的输出仍然至少有两个相同的字符。
int size = strlen(array);
未定义行为,因为数组未初始化。另外类型错误。
- 您的随机索引是错误的,因为您可能想从
characters
数组中的所有字符中 select,而不仅仅是第 4 个字符。
- 您的重复检查有误。
- 类型错误等小问题
int main(void)
{
srand ( time(NULL) );
char characters[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'};
char array[20];
int random, random_character;
size_t j;
for(size_t i = 0; i < 4; )
{
random_character= rand() % sizeof(characters);
random = characters[random_character];
array[i] = random;
for(j = 0; j < i; j++)
{
if(array[j] == random) break;
}
if(j == i)
{
i++;
}
}
for(size_t i = 0; i < 4; i++){
printf("%c ", array[i]);
}
}
我尝试在 C 中创建一个程序,从数组中选择随机字符并将它们存储在第二个数组中但不重复。
代码:
int main() {
srand(time(NULL));
char characters[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I' };
char array[20];
int size = strlen(array);
int random, random_character;
for (int i = 0; i < 4; i++) {
random_character = rand() % 4;
random = characters[random_character];
array[i] = random;
for (int j = 0; j < 4; j++) {
if (array[i] == array[j]) {
array[i] = random;
}
}
}
for (int i = 0; i < 4; i++) {
printf("%c ", array[i]);
}
}
我的输出仍然至少有两个相同的字符。
int size = strlen(array);
未定义行为,因为数组未初始化。另外类型错误。- 您的随机索引是错误的,因为您可能想从
characters
数组中的所有字符中 select,而不仅仅是第 4 个字符。 - 您的重复检查有误。
- 类型错误等小问题
int main(void)
{
srand ( time(NULL) );
char characters[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'};
char array[20];
int random, random_character;
size_t j;
for(size_t i = 0; i < 4; )
{
random_character= rand() % sizeof(characters);
random = characters[random_character];
array[i] = random;
for(j = 0; j < i; j++)
{
if(array[j] == random) break;
}
if(j == i)
{
i++;
}
}
for(size_t i = 0; i < 4; i++){
printf("%c ", array[i]);
}
}