使用 3 个字符生成 200 个唯一的 40 个字符的字符串
Generate 200 unique 40-char strings using 3 chars
我想仅使用 'a'、'b' 或 'c' 生成至少 200 个唯一的 40 个字符的字符串。例如,一个好的字符串应该是 "aaaa...aaaa"(40 个字符)。到目前为止,这是我的方法:
char newid[41];
sprintf(newid, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%\n", "bbbb");
另一种方法:
char newid[41];
char* pad[41] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
sprintf(newid, "%s%s\n", pad+4, "bbbb");
但我仍然不知道如何创建一个循环来自动执行该过程...(抱歉,我是 C 语言的菜鸟)。请帮忙;任何提示或方法表示赞赏!谢谢!
2^64 > 3^40 所以只需选择 200 (不同) 12157665459056928801
以下的随机 64 位数字并转换为基数 3(a
、b
和 c
"digits" 而不是通常的 0
、1
和 2
).
使用伪随机数生成器在 'a'、'b' 和 'c' 之间随机选择。为加强唯一性,请跟踪以前生成的 newid
值并丢弃重复项
#include <stdlib.h>
#include <string.h>
void generate() {
char previous[199][40+1];
char newid[40+1];
int i, j, unique;
srand(time(NULL));
newid[40] = '[=10=]';
for(i=0; i < 200; i++) {
for(j=0; j < 40; j++) {
newid[j] = 'a' + (rand() % 3);
}
/* confirm newid is 'unique' */
unique=1;
for(j=0; unique && j < i; j++) {
if (strcmp(previous[j], newid) == 0)
unique=0;
}
if (!unique) {
/* discard duplicate */
i--;
continue;
}
/* save newly genererated unique value */
strcpy(previous[i], newid);
printf("%s\n", newid);
}
}
我想仅使用 'a'、'b' 或 'c' 生成至少 200 个唯一的 40 个字符的字符串。例如,一个好的字符串应该是 "aaaa...aaaa"(40 个字符)。到目前为止,这是我的方法:
char newid[41];
sprintf(newid, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%\n", "bbbb");
另一种方法:
char newid[41];
char* pad[41] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
sprintf(newid, "%s%s\n", pad+4, "bbbb");
但我仍然不知道如何创建一个循环来自动执行该过程...(抱歉,我是 C 语言的菜鸟)。请帮忙;任何提示或方法表示赞赏!谢谢!
2^64 > 3^40 所以只需选择 200 (不同) 12157665459056928801
以下的随机 64 位数字并转换为基数 3(a
、b
和 c
"digits" 而不是通常的 0
、1
和 2
).
使用伪随机数生成器在 'a'、'b' 和 'c' 之间随机选择。为加强唯一性,请跟踪以前生成的 newid
值并丢弃重复项
#include <stdlib.h>
#include <string.h>
void generate() {
char previous[199][40+1];
char newid[40+1];
int i, j, unique;
srand(time(NULL));
newid[40] = '[=10=]';
for(i=0; i < 200; i++) {
for(j=0; j < 40; j++) {
newid[j] = 'a' + (rand() % 3);
}
/* confirm newid is 'unique' */
unique=1;
for(j=0; unique && j < i; j++) {
if (strcmp(previous[j], newid) == 0)
unique=0;
}
if (!unique) {
/* discard duplicate */
i--;
continue;
}
/* save newly genererated unique value */
strcpy(previous[i], newid);
printf("%s\n", newid);
}
}