zoukankan      html  css  js  c++  java
  • c/c++ 随机函数 产生伪随机数

    使用ANSI C库函数的rand和srand函数可以实现随机数的产生。使用头文件<stdlib.h>

    随机数的产生以一个数字开始,应用一系列数学操作,产生一个与之没有明显联系的数字,但这样的数字都是以有限的方式依赖于前面的数字,更适合成为伪随机数。伪随机数序列的首个数字成为该序列的种子(seed)

    rand函数:

     int rand(void);    //直接返回一个[0,INT_MAX)之间的整数数,其使用的是固定的seed(1),所以每次调用产生的随机数序列是相同的

    如果需要每次都产生不一样的随机数序列,需要使得每次的seed不同,可以使用srand函数赋予seed值:

    void srand(unsigned seed);

    常用<ctimo.h>中的 time_t time(NULL)来产生种子,time_t是(unsigned int)类型,time(NULL)返回的是从1970年1月1日零时(GMT,国际标准时)起逝去的秒数,因此可以每次为srand提供不同的起点。

    如果需要产生范围为[0,n)的随机整数,使用:  rand()%n;

    如果需要产生范围为[a,b)的随机整数,使用:  rand()%(b-a)+ a;

    如果需要产生范围为[0,1)的随机浮点数,使用: rand()/(double)INT_MAX;

    部分代码如下:

    #include <stdlib.h>
    #include <ctime>
    
    ...
    srand(unsigned int)(time(NULL));
    int ranA = rand()%1000;                         //产生0-999的随机数
    int ranB = rand()%(1000-300)+300;       //产生300-999的随机数
    int ranC = rand()/(double)INT_MAX * 5; //产生0-5之间的随机浮点数        
    

      本文参考:数据结构与程序设计 第4章    Niino的C++传说

  • 相关阅读:
    cmd中删除、添加、修改注册表命令
    修改注册表使win server 2012R2开机进入桌面而不是开始界面
    win8.1/2012R2上面安装flash debugger
    ANT中的copy和move标签
    用maven在MANIFEST.MF文件中的Class-Path中增加当前目录(.)
    通过ANT生成MANIFEST.MF中的Class-Path属性
    Junit4进行参数化测试
    DbUnit入门实战
    oracle查看当前正在使用的数据库
    左偏树 P3377【模板】左偏树(可并堆)
  • 原文地址:https://www.cnblogs.com/liaopr/p/2999577.html
Copyright © 2011-2022 走看看