gpt4 book ai didi

c++ - rand() 即使在 srand() 之后也产生相同的结果

转载 作者:行者123 更新时间:2023-11-27 22:56:29 25 4
gpt4 key购买 nike

目前我正在尝试编写一个简单的程序来生成一串随机字符来表示一个名称。调用它一次会产生我想要的结果,但是如果我再次调用该函数来生成姓氏,我会得到与名字、长度和所有内容相同的结果。我目前使用 time() 在顶部播种 rand,所以我不确定出了什么问题/我能做什么。感谢您的宝贵时间,我们将不胜感激。

我的代码如下:

 int main(void)
{
srand(time(NULL));
int randomNum = 0;
char firstName[12] = { 0 };
char lastName[36] = { 0 };
char fullName[50] = { 0 };

/*for (int j = 0; j < 20; j++)
{
*/ randomNum = rand() % 10 + 2;
strcpy(firstName, generateName(randomNum));
printf("First: %s\n", firstName);

randomNum = rand() % 34 + 2;
strcpy(lastName, generateName(randomNum));
printf("Last: %s\n\n", firstName);


//strcat(fullName, firstName);
//strcat(fullName, " ");
//strcat(fullName, lastName);

//}



//getchar();

return 0;
}

而generateName函数如下:

char* generateName(int length)
{
char* randomName = NULL;

randomName = (char*)malloc(sizeof(char) * (length + 1));
if (randomName)
{
randomName[0] = rand() % 26 + 65;

for (int i = 1; i < length; i++)
{
randomName[i] = rand() % 26 + 97;
}
randomName[length] = '\0';
}
return randomName;

}

再次感谢您的宝贵时间。

最佳答案

我认为您可以生成姓氏,但是当您打印它时:

printf("Last: %s\n\n", firstName);
^here

看到了吗?你又打印了名字!!

只是做:

printf("Last: %s\n\n", lastName);

PS:VisualStudio 最好的地方是它的集成调试器。您应该学会使用它,这些错误会自行显现。

关于c++ - rand() 即使在 srand() 之后也产生相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32554030/

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