作者star508 (star)
看板PHP
標題[請益] php使用迴圈的效率
時間Wed Jun 25 22:51:19 2008
今天有碰到一個問題,不知道有沒有人可以幫我解惑?
有一個抽獎活動,共有九個獎項個別有設定好抽獎的機率,
我是取一到一千的亂數,依照取得的亂數決定獎項,程式碼如下:
//九個獎項從第一獎到第九獎機率為2%,10%,15%,0.3%,0.7%,2%,10%,20%,40%
$prizeRange=array{0,20,100,150,3,7,20,100,200,400};
$randNo=mt_rand(1,1000);//從一到一千隨機取出一數字
$prizeNo=0;//從下方程式判斷得第幾獎
//方法一(慢)
while($randNo>0){$randNo-=$prizeRang[$prizeNo+1];$prizeNo++;}
//方法二(快)
for($i=1;$i<count($prizeRange);$i++}
{
$randNo=$randNo-$prizeRange[$i];
if ($randNo<=0) {$prizeNo=$i;break;}
}
//
本來是用第一種方法,但是實際放上server執行時發現執行速度超慢,還會出現超過
超過30秒沒回應的error,
後來改成第二種方法讓迴圈有實際的次數去跑,結果速度差很多,就算再寫個for迴圈
跑個2000次也是一開網頁就有執行結果,不知道到底為何結果差這麼多,照理說迴圈
執行的次數應該差不多啊,不知道有沒有人可以幫我解答,Tks!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.120.7.108
推 jimwayne123 :真的次數一樣嗎?丟個flag看看第一個迴圈的狀態吧? 06/26 00:32
推 arrack :方法一的陣列有錯 少一個e 06/26 01:04
→ starjou :array( ...... ) 你的 code 不是從你的程式直接 copy 06/26 01:17
→ starjou :過來的,搞不好你的程式有什麼小錯變成無窮迴圈 06/26 01:17
→ starjou :上面的 code 把變數名稱錯跟 array 後面的括號改掉之 06/26 01:18
→ starjou :後執行起來蠻正常的 06/26 01:18
→ JoeHorn :去算算 Big-O 吧.... 差很多哦... 06/26 02:13