gpt4 book ai didi

c - 为什么我无法生成超过 1 个随机字符串?

转载 作者:行者123 更新时间:2023-11-30 18:12:20 25 4
gpt4 key购买 nike

这里的代码将始终生成一个长度为 MAXLEN 的字符串,但随后开始生成长度较短的字符串。我不确定为什么会发生这种情况。

void generate_strings(int n) {
char genvals[] = "abcdefghijklmnopqrstuvwxyzABC"
"DEFGHIJKLMNOPQRSTUVWXYZ0123456789 ";
char str[MAXLEN + 1];
int i = 0, j = 0;
for (i = 0; i < n; i++) {
for (int j = 0; j < MAXLEN; j++) {
str[j] = genvals[rand() % strlen(genvals) - 1];
}
str[MAXSTRLEN] = '\0';
printf("%s\n", str);
memset(str, 0, MAXLEN);
}

}

最佳答案

一些更改:

1)正如 dazedandconfused 在他的回答中指出的那样,您需要为随机数生成器提供种子。

2) 不要多次计算 genvals 的长度。

3) 您对 genvals 的索引不正确。

4) 没有必要调用memset

void generate_strings(int n) {
srand(time(NULL)); // seed the random number generator
char genvals[] = "abcdefghijklmnopqrstuvwxyzABC"
"DEFGHIJKLMNOPQRSTUVWXYZ0123456789 ";
size_t length = strlen(genvals); // only calculate this once
char str[MAXLEN + 1];
int i = 0, j = 0;
for (i = 0; i < n; i++) {
for (int j = 0; j < MAXLEN; j++) {
str[j] = genvals[rand() % length];
}
str[MAXLEN] = '\0';
printf("%s\n", str);
}
}

关于c - 为什么我无法生成超过 1 个随机字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37075692/

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