srand() 函数内的函数行为
在 C 中使用 rand() 函数时,一个可能会遇到这样的问题:在同一函数中多次调用该函数始终会产生相同的值。要解决此问题,必须了解 srand() 函数的行为。
什么是 srand() 以及它为何重要?
srand() 函数初始化随机数生成器。当重复调用 rand() 函数而不用 srand() 重新初始化它时,它会继续从同一种子生成后续数字,从而产生可预测的结果。
修复随机性的解决方案
为了确保真正的随机性, srand() 函数只能在程序开始时调用一次,而不是在特定函数内调用。通过这样做,种子仅设置一次,从而允许 rand() 函数通过后续调用生成真正的随机序列。
应用解决方案
在提供的代码片段中,问题出在 PullOne() 函数中。 srand() 函数在每次调用 rand() 之前被调用,从而导致可预测的序列和重复的结果。要纠正此问题,请将对 srand() 的调用移至主函数的开头:
int main() { std::srand(time(0)); string pull_1, pull_2, pull_3; pull_1 = PullOne(); pull_2 = PullOne(); pull_3 = PullOne(); return 0; }
通过应用此修改,rand() 函数将为 pull_1、pull_2 和pull_3.
以上是为什么我的 C rand() 函数始终返回相同的值,如何使用 srand() 修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!