zoukankan      html  css  js  c++  java
  • cocos2dx:获取不重复的随机数

    先上源码:

     1 bool HelloWorld::init()
     2 {
     3     //////////////////////////////
     4     // 1. super init first
     5     if ( !CCLayer::init() )
     6     {
     7         return false;
     8     }
     9     int num[20];
    10     for (int i=0; i<20; i++) {
    11         num[i] = i;
    12     }
    13     
    14     for (int i=0; i<20; i++) {
    15         int r = random(i, 19);
    16         swap(num[i], num[r]);
    17         CCLOG("rand:%d", num[i]);
    18     }
    19     
    20     return true;
    21 }
    22 
    23 int HelloWorld::random(int start, int end){
    24     float i = CCRANDOM_0_1()*(end-start+1)+start;
    25     return (int)i;
    26 }

    第24行的语句的意思是获取[start, end]范围的随机数。

    第9--12行初始化一个长度为20的数组,初始化的内容是将要被打乱的目标随机数。

    第14-18行首先获取一个范围为[i, 19]的随机数r,然后将index为i和index为r的数进行交换,然后输出利用随机数打乱后的数组。

    另外,实际使用时不要忘记设置随机数种子,不然的话每次获取的随机数都是相同的

    1 srand(time(NULL));   //放在调用随机函数的循环外
  • 相关阅读:
    学习dubbo
    【Spring】SpringMVC配置文件
    Mac下git配置
    【Spring】入门HelloWorld
    【MySql】启动/停止
    Javaweb 编解码流程
    TensorFlow学习笔记1
    Nginx 代理配置
    【转】RPC介绍
    【dubbo】dubbo控制台搭建
  • 原文地址:https://www.cnblogs.com/arthas/p/2859863.html
Copyright © 2011-2022 走看看