浅谈php随机不重复数的两种算法
程序员文章站
2024-04-04 22:33:41
...
先引入别人的一个秒表计时类(counttime.class.php): 1.先看第一个例子(大数中取少数): 1 ? 2 /* 3 @描述: Stopwatch这个类用户获取脚本执行时间 4 @作者: Klesti Hoxha klesti@gmail.com 5 */ 6 7 class Stopwatch { 8 private $start ; 9 private $en
先引入别人的一个秒表计时类(counttime.class.php):
1.先看第一个例子(大数中取少数):
1 2 /* 3 @描述: Stopwatch这个类用户获取脚本执行时间 4 @作者: Klesti Hoxha5 */ 6 7 class Stopwatch { 8 private $start; 9 private $end; 10 private $markup_start = array(); 11 private $markup_end = array(); 12 13 function __construct($markup=false) { 14 $this->start($markup); 15 } 16 17 public function start($markup=false) { 18 if (!$markup) { 19 $this->start = $this->getmicrotime(); 20 } else { 21 $this->markup_start[$markup] = $this->getmicrotime(); 22 } 23 } 24 25 public function stop($markup=false) { 26 if (!$markup) { 27 $this->end = $this->getmicrotime(); 28 } else { 29 $this->markup_end[$markup] = $this->getmicrotime(); 30 } 31 return $this->getDuration($markup); 32 } 33 34 public function getDuration($markup=false) { 35 if (!$markup) 36 { 37 return number_format($this->end-$this->start,4); 38 } else { 39 return number_format($this->markup_end[$markup]-$this->markup_start[$markup],4); 40 } 41 } 42 43 public function reset($markup) { 44 if (!$markup) { 45 $this->start = 0; 46 $this->end = 0; 47 $this->markup_start = array(); 48 $this->markup_end = array(); 49 } else { 50 $this->markup_start[$markup] = 0; 51 $this->markup_end[$markup] = 0; 52 } 53 } 54 55 private function getmicrotime(){ 56 list($usec, $sec) = explode(" ",microtime()); 57 return ((float)$usec + (float)$sec); 58 } 59 60 } 61 ?>
测试的两种方法如下:
1 2 php 3 require "counttime.class.php";//把类文件引用进来,根据你的实际情况来确定路径,这里是在同级目录 4 $s = new Stopwatch(); 5 6 $s->start("div1"); 7 //range 是将1到100 列成一个数组 8 $numbers = range (1,1000000); 9 //shuffle 将数组顺序随即打乱 10 shuffle ($numbers); 11 //array_slice 取该数组中的某一段 12 $no=30; 13 $result = array_slice($numbers,0,$no); 14 for ($i=0;$i$no