在 C 中的循环内生成不同的随机数
在 C 中,编写在循环内生成随机数的代码有时会产生意想不到的结果。考虑以下代码片段:
for (int t = 0; t < 10; t++) { int random_x; srand(time(NULL)); random_x = rand() % 100; cout << "\nRandom X = " << random_x; }
此代码的问题在于循环内重复使用 srand(time(NULL))。虽然 srand() 用于初始化随机数生成器,但在迭代过程中多次调用它会导致生成相同的随机数序列。
要在每次迭代中生成不同的随机数,srand( ) 应该只调用一次,最好是在程序开始时调用。这确保随机数生成器的种子仅设置一次,从而有效地“随机化”每次迭代的起点。
int main() { srand(time(NULL)); for (int t = 0; t < 10; t++) { int random_x = rand() % 100; cout << "\nRandom X = " << random_x; } }
此外,如果您需要完全重置随机数初始化,您可以使用不同的种子值再次调用 srand()。这将生成一个新的随机数序列,与之前的随机数序列不同。
以上是如何在 C 循环中生成不同的随机数?的详细内容。更多信息请关注PHP中文网其他相关文章!