C++ srand()只能调用一次,否则rand()每次返回相同值

在C++编程中,srand()应该只调用一次以避免rand()每次都返回相同值。当多次调用srand()使用相同的种子时,会生成重复的伪随机数序列,导致如洗牌算法等依赖随机数的功能失效。解决方案是将srand()的调用移到程序开始部分,使用一次初始化随机数生成器,后续调用rand()即可获得所需的伪随机数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++ srand()只能调用一次,否则rand()每次返回相同值

面试的时候写一个洗牌算法,结果遇到这个问题坑死我了,幸运的是面试官也不太看得出来问题出在哪(他主攻Java),所以给了我足够时间去调试……


问题描述:

自己创作的洗牌算法:

#include <iostream>
#include <ctime>
using namespace std;
int GetRandomNumber()
{
   
   
    int RandomNumber;
    srand((unsigned)time(0));//time()用系统时间初始化种。为rand()生成不同的随机种子。
    RandomNumber = rand() % 100 + 1;//生成1~100随机数
    return RandomNumber;
}
void getRand(int* arr)
{
   
   
    int i, j
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值