码迷,mamicode.com
首页 > 编程语言 > 详细

生成随机数组

时间:2015-05-25 23:49:54      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:

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

 

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\n",brr[0]);
        printf("%d\n",last);


}

 

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

<?php

$arr = range(0, 1000000);
$length = 1000001;



shuffle($arr);
echo $arr[2];
echo "\n";

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 "\n";

echo xdebug_time_index();

//END

 

生成随机数组

标签:

原文地址:http://www.cnblogs.com/chenpingzhao/p/4529131.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!