生成随机数组
不多说,直接上代码测试,之前在网上看到一个生成随机数组,写的实在不怎么样,下面是我的方式,有谁有更好的方式,可以交流一下
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/
- 本文版权归作者和博客园共有,如需转载,请联系 pingzhao1990#163.com

浙公网安备 33010602011771号