zoukankan      html  css  js  c++  java
  • 关于Cocos2d-x随机数的生成

    1.使用前必须下一个随机种子,可以让每一次生成的随机数是不一样的,这里的每一次指的是时间上的每一次,如果是同一时间的随机数就不能这样写了

    srand((unsigned)time(NULL));---第一种

    srand(time(NULL));---第二种

    再使用cocos2d-x内置的方法rand(),可以获得一个0到100的数,再取余的话就可以得到rand()x,0到x的数

    int picNum=5+rand() % 25;

    5到30

    int picNum=10+rand() % 30;

    10到40

    int picNum = 1 + rand() % 4;

    1到4

     例子

    srand((unsigned)time(NULL));
    picNum = 1 + rand() % 6;

    2.同一时间,或者同一帧的随机数其实并不是真正的随机数,但是没办法,目前我只会用这种伪随机数

    方法:直接写

    picNum = 1 + rand() % 6;

    3.还有一种产生随机数的方法

    #include <random>

    std::uniform_int_distribution<unsigned> u(1, 6);
    std::default_random_engine e;
    e.seed((unsigned)time(NULL));
    int random_number = u(e);

    其中random_number 为1到6的一个随机数,这是真随机数,但还是不能在相同时间生成不同的随机数

    4.真正的随机数

    以上的

    srand((unsigned)time(NULL));

    srand((unsigned)time(0));

    只是产生的随机数是以秒为单位的,也就是说,每一秒产生的随机数都是不一样的,但是同一秒产生的随机数是一样的,这种随机种子是以秒为单位的

    还有一种是以毫秒甚至说更短的时间为随机种子,这样子如果遇到1秒内产生非常多不同的随机数的时候,就可以使得每秒产生非常多不同的随机数

    srand(clock());
    random();

  • 相关阅读:
    Oracle 11G单机 无网络环境静默安装
    Centos 7 编译安装llvm 8.0.0
    linux下测试读写
    Linux 初始化 init 系统(1):sysvinit
    自动挂载文件/etc/fstab功能详解
    虚拟机安装LINUX网络配置注意的问题
    rhel7报错整理
    16/4/4二代支付硬盘故障处理
    RedHat Enterprise Linux 7关闭防火墙方法
    Linux命令之awk数组使用范例
  • 原文地址:https://www.cnblogs.com/HangZhe/p/5701519.html
Copyright © 2011-2022 走看看