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();

  • 相关阅读:
    兼容FF IE的回车事件
    WP7页面的数值传递和对象传递
    简单实用选项卡
    离情切
    放在最前面
    Linux MySQL主从复制(Replication)配置
    C语言h文件头中的变量初始化
    verilog HDL 重复运算的问题
    SOPC构架双视频TFT液晶IP核
    用FPGA实现视频中物体边缘二值化
  • 原文地址:https://www.cnblogs.com/HangZhe/p/5701519.html
Copyright © 2011-2022 走看看