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

    不多说,直接上代码测试,之前在网上看到一个生成随机数组,写的实在不怎么样,下面是我的方式,有谁有更好的方式,可以交流一下

    C代码:很快很快的

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    
    void main() {
            long last = 1000000;
            long *arr=(long *)malloc(last*sizeof(long));
            long *brr=(long *)malloc(last*sizeof(long));
            long i,R;
    
            srand((unsigned)time(NULL));
            for(i=0;i<last;i++){
                    arr[i]=i;
            }
    
            while(last>0){
                    R=rand()*rand()%1000000;
                    if(arr[R]==-10) continue;
                    brr[1000000-last]=arr[R];
                    arr[R]=-10;
                    last--;
            }
    
            printf("%d
    ",brr[0]);
            printf("%d
    ",last);
    
    
    }
    

    PHP代码:自带函数,其实也是C的实现shuffle 两两随机交换的原理(快速排序也是两个交换,这样空间复杂度肯定低一点)

    <?php
    
    $arr = range(0, 1000000);
    $length = 1000001;
    
    
    
    shuffle($arr);
    echo $arr[2];
    echo "
    ";
    
    echo xdebug_time_index();
    
    //END
    

    PHP代码:自己实现的,不是一般的慢要17s左右,已经是十分快的的一种方式了,其他方式一般会显示  内存耗尽了

    <?php
    
    $arr = range(0, 1000000);
    $length = 1000001;
    $out = array();
    
    while($length) {
            $R = mt_rand(0,$length);
            $out[] = $arr[$R];
            $arr[$R]=$arr[$length-1];
            $length--;
    }
    shuffle($arr);
    echo $arr[2];
    echo "
    ";
    
    echo xdebug_time_index();
    
    //END
    
  • 相关阅读:
    你不知道的正则表达式
    浅谈apache网页优化及方法
    Web基础与HTTP协议
    nfs
    Vi编辑器的工作模式
    磁盘管理和磁盘配额
    系统安全及应用
    正则表达式与文本编辑器
    读书笔记_java设计模式深入研究 第三章 工厂模式 Factory
    JavaScript模式读书笔记 第7章 设计模式
  • 原文地址:https://www.cnblogs.com/chenpingzhao/p/4529131.html
Copyright © 2011-2022 走看看