gpt4 book ai didi

c - 从数组中选取一个随机字符

转载 作者:行者123 更新时间:2023-11-30 21:17:28 24 4
gpt4 key购买 nike

我想知道是否有一种方法可以从 C 中的以下数组中随机选取一个字符,但只选取每个字符一次......

const char characters[13][4] =
{ 'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' , 'H' , 'I' ,
'J' , 'K' , 'L' ,'M' , 'N' , 'O' , 'P' , 'Q' , 'R' ,
'S' , 'T' , 'U' , 'V' , 'W' , 'X' , 'Y', 'Z',

'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' , 'H' , 'I' ,
'J' , 'K' , 'L' , 'M' , 'N' ,'O' , 'P' , 'Q' , 'R' ,
'S' , 'T' , 'U' , 'V' , 'W' , 'X' , 'Y', 'Z'

};

最佳答案

当您选择一个角色时,只需将其从集合中删除即可:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

char getRandomChar(char *set) {
size_t len = strlen(set);
if (len == 0) {
/* We are all out of characters */
return -1;
}
/* Select a character at random */
int rv = rand() % len;
char ret = set[rv];
/* Remove the selected character from the set */
set[rv] = set[len -1];
set[len -1] = '\0';
/* Return the character */
return ret;
}

int main(void) {
char set[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char randomChar;

/* Intialize random number generator */
srand((unsigned)time(NULL));

while ((randomChar = getRandomChar(set)) != -1) {
printf("Selected %c. Remaining: %s\n", randomChar, set);
}
return 0;
}

请注意,代码可以处理同一字符多次出现的情况。如果您希望每个字符绘制两次,请使用起始集“AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ”

关于c - 从数组中选取一个随机字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41185861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com