[請益] php使用迴圈的效率

看板PHP作者 (star)時間17年前 (2008/06/25 22:51), 編輯推噓2(205)
留言7則, 4人參與, 最新討論串1/3 (看更多)
今天有碰到一個問題,不知道有沒有人可以幫我解惑? 有一個抽獎活動,共有九個獎項個別有設定好抽獎的機率, 我是取一到一千的亂數,依照取得的亂數決定獎項,程式碼如下: //九個獎項從第一獎到第九獎機率為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

06/26 00:32, , 1F
真的次數一樣嗎?丟個flag看看第一個迴圈的狀態吧?
06/26 00:32, 1F

06/26 01:04, , 2F
方法一的陣列有錯 少一個e
06/26 01:04, 2F

06/26 01:17, , 3F
array( ...... ) 你的 code 不是從你的程式直接 copy
06/26 01:17, 3F

06/26 01:17, , 4F
過來的,搞不好你的程式有什麼小錯變成無窮迴圈
06/26 01:17, 4F

06/26 01:18, , 5F
上面的 code 把變數名稱錯跟 array 後面的括號改掉之
06/26 01:18, 5F

06/26 01:18, , 6F
後執行起來蠻正常的
06/26 01:18, 6F

06/26 02:13, , 7F
去算算 Big-O 吧.... 差很多哦...
06/26 02:13, 7F
文章代碼(AID): #18Objeyg (PHP)
討論串 (同標題文章)
文章代碼(AID): #18Objeyg (PHP)