有情况下,这可能是有用的.

但往往,这是不需要的。如果你正在写一个喜罗游戏(用户有10个试图猜测一个数字,和电脑告诉他们,他们的猜测是太高或太低),你不希望该程序在每次选择相同的数字。所以让我们更深地看一下为什么会发生,以及我们如何能够解决它。与以前的,整个序列是不是随机的!这意味着我们的计划结束完全可预测的(相同的输入导致相同的输出每次)。有情况下,这可能是有用的,甚至是所需的(例如,你希望一个科学模拟是可重复的,或你试图调试为什么你的随机地牢发电机崩溃)。

17  
#include <iostream>  
#include <cstdlib> // for rand() and srand()  
#include <ctime> // for time()  
   
int main()  
{  
    srand(static_cast<unsigned int>(time(0))); // set initial seed value to system clock  
   
    for (int count=0; count < 100; ++count)  
    {  
        std::cout << rand() << "\t";  
   
        // If we've printed 5 numbers, start a new row  
        if ((count+1) % 5 == 0)  
            std::cout << "\n";  


我们真的不需要我们的种子是一个随机数-我们只需要选择的东西,每次程序运行时的变化。然后我们可以使用我们的PRNG从种子生成一个唯一的伪随机数序列。
做这件事的普遍接受的方法是登记系统时钟。每次用户运行程序时,时间会有所不同。如果我们使用这个时间值作为我们的种子,那么我们的程序将产生一个不同的数字序列,每次运行!
C自带的函数称为time()返回秒数自1970年1月1日午夜。使用它,我们只需要包含CTime头,然后初始化srand()打电话的时间(0)。


一般来说,我们不希望随机数的0和rand_max之间--我们希望其他两值之间的数字,我们可以称之为最小和最大。例如,如果我们试图模拟用户滚动一死,我们希望1和6之间的随机数(迂腐的语法笔记:是的,死是骰子的奇异)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值