zoukankan      html  css  js  c++  java
  • 2.5 随机数的生成

     1 // Die Roller
     2 // Demonstrates generating random numbers
     3 
     4 #include <iostream>
     5 #include <cstdlib>
     6 #include <ctime>
     7 
     8 using namespace std;
     9 
    10 int main()
    11 {
    12     srand(static_cast<unsigned int>(time(0)));  // seed random number generator based on current time
    13 
    14     int randomNumber = rand(); // generate random number
    15 
    16     int die = (randomNumber % 6) + 1; // get a number between 1 and 6
    17     cout << "You rolled a " << die << endl;
    18 
    19     return 0;
    20 }

    Die Roller程序模拟投掷六面骰子。计算通过生成随机数来进行投掷。

     rand()函数

    程序包含了一个新文件:#include<cstdlib>

    文件cstdlib包含(除了其他内容以外)处理随机数生成的函数。因为包含了该文件,所以可以自由调用其中的函数,包括rand()。

    函数是能完成某项任务并有一个返回值的一些代码块。可以通过在函数名后面加上一对括号来调用函数。如果函数有返回值,该值可以赋给一个变量。

    函数rand()生成从0到至少32767之间的随机数。具体的上界取决于所使用的C++实现。

    为随机数生成器确定种子

    计算机基于数学公式生成的伪随机数,而不是真正的随机数。

    可以想象成让计算机从一本包含许多预定数字的书中读取数字。

    为了防止总是产生相同的随机数列,可以告诉计算机从书中的某一任意位置开始读取数字。该过程称为为随机数生成器确定种子。

    srand(static_cast<unsigned int>(time(0)));  // seed random number generator based on current time

    这行代码,基于当前日期与时间为随机数生成器确定种子。因为当前日期与时间在每次程序运行时都不同。

    实际上,srand()函数为随机数生成器确定种子,只需要将一个unsigned int型的值作为种子传递给它。

    time(0)的返回值:一个基于当前系统日期和时间的数字。

    ststic_cast<unsigned int>只是将这个值转换为unsigned int型。

  • 相关阅读:
    那一定都是你的错!- 一次FastDFS并发问题的排查经历
    程序员和烟民
    Spring Boot(十六):使用 Jenkins 部署 Spring Boot
    阿里Dubbo疯狂更新,关Spring Cloud什么事?
    从架构演进的角度聊聊Spring Cloud都做了些什么?
    FastDFS 集群 安装 配置
    中小型互联网公司微服务实践-经验和教训
    jvm系列(十一):JVM演讲PPT分享
    jvm系列(十):如何优化Java GC「译」
    Spring Boot (十五): Spring Boot + Jpa + Thymeleaf 增删改查示例
  • 原文地址:https://www.cnblogs.com/wlyperfect/p/12401005.html
Copyright © 2011-2022 走看看