C++ 随机数函数rand()与srand()的思考

所谓的随机,实际上是伪随机。(真随机应该是每次需要随机数时都实时随机产生)

随机数函数的实质是

每次调用rand()前,(第一次调用rand())系统通过随机数种子生成一个随机数队列。每次调用rand()时,直接从该随机队列里依次获取下一随机数。
随机数种子对于随机数序列至关重要。随机数种子可以通过srand()设置。
通常的设置方法为:srand((int)time(null)),使用时间戳作为种子可以保证每次生成的随机数序列都不一样。当然,在一秒钟内除外。

随机数种子一样,生成的随机数序列也就一样。如果不使用srand()设置随机数种子,随机数种子为默认值0。带来的影响是:每次生成的随机数序列都一样。

下面程序中,每次的结果都会一样,这肯定不是我们想要的结果。

for (int idx = 0; idx < 10; ++idx)
{
	std::cout << rand() % 10 << " ";
}

std::cout << std::endl;

你需要以当前时间戳作为参数调用srand()

srand((int)time(null));
for (int idx = 0; idx < 10; ++idx)
{
	std::cout << rand() % 10 << " ";
}

std::cout << std::endl;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值