【发布时间】:2021-03-13 06:32:40
【问题描述】:
我有一个函数可以在我的程序中生成 随机字符串,它可以按我的意愿工作,但仅与 循环 分开。 当我在 main() 的循环中使用它时,它每次都返回相同的字符串(例如 20)。 这是那个函数:
string randomString()
{
string c;
int r = NULL;
int num = 7;
srand(time(NULL));
for (int i = 0; i < num; i++)
{
r = rand() % 26;
c += 'a' + r;
}
cout << "Random string: " << c << " \n";
return c;
}
我应该怎么做才能让它在每个循环中返回不同的字符串? 感谢您的帮助。
【问题讨论】:
-
只在程序开始时调用
srand一次。 -
解释。 srand 每次调用它时都会重置随机数生成器。这就是为什么你每次都会得到相同的“随机”字符串。即使您将时间传递给 srand,但如果自上次调用 srand 后经过的时间不够,您将获得相同的随机数。
-
谢谢,这正是我要找的
-
一般建议:阅读您正在使用的东西的文档。
srands 唯一的目的是产生你刚刚看到的效果。这次你得到的随机数不是随机的,下一次可能是别的东西......