看板 PHP 關於我們 聯絡資訊
※ 引述《poeta (鍵盤詩人)》之銘言: : ※ 引述《HarryWen (Harry)》之銘言: : : http://i.imgur.com/t1fyTrC.jpg : : http://i.imgur.com/NdFwdI6.jpg : : http://i.imgur.com/P77pKq2.jpg : : 請各位幫幫忙 : 剛剛有發文,然後有詳細註解,結果系統斷線,文章就不見了,QQ。 : 重新打一遍,就懶著寫註解了,不懂再來信,以下都是最簡單的寫法: : <?php : //練習6,這題難在怎麼找到陣列中亂數最大值 : for($i=0;$i<10;$i++){ : $a[$i]=rand(1,50); : echo $a[$i]."<BR>"; : } : for($i=50;$i>0;$i--){ : for($j=0;$j<10;$j++){ : if($a[$j]==$i){ : echo "最大值是".$i."<BR>"; : $j=10; : $i=0; : } : } : } : //練習6 偽泡沫排序 : for($i=0;$i<10;$i++){ : $a[$i]=rand(1,50); : echo $a[$i]."<BR>"; : if($i>0){ : if($a[$i]<$a[$i-1]){ : $temp=$a[$i-1]; : $a[$i-1]=$a[$i]; : $a[$i]=$temp; : } : } : } : echo $a[9]."是最大值<BR>"; : //練習7,如果你不會switch的話 : $a1=0; : $a2=0; : $a3=0; : $a4=0; : $a5=0; : $a6=0; : for($i=0;$i<100;$i++){ : $a[$i]=rand(1,6); : if ($a[$i]==1) : $a1++; : elseif ($a[$i]==2) : $a2++; : elseif ($a[$i]==3) : $a3++; : elseif ($a[$i]==4) : $a4++; : elseif ($a[$i]==5) : $a5++; : else : $a6++; : } : echo ($a1/100)."是甩到1的機率<BR>"; : echo ($a2/100)."是甩到2的機率<BR>"; : echo ($a3/100)."是甩到3的機率<BR>"; : echo ($a4/100)."是甩到4的機率<BR>"; : echo ($a5/100)."是甩到5的機率<BR>"; : echo ($a6/100)."是甩到6的機率<BR>"; : ?> 既然原po有po程式碼應該就不是只是來要答案了。 事實上第七題有一點很重要,也是我們在分析程式碼前,要先明白「除去不必要因素」。 簡單來說,題目都告訴你,有100個資料,那就沒有除100的必要性了。 因為你產生的結果必定為100,你只要計算出個數加上「%」就行了。 不過……當然我待會po的程式碼不能用我的角度和態度來看。 也就是原po你如果照抄反而可能會被當。 因為你老師大概不會相信那是你寫的……… 你可以參考,仔細好好想想自己如果知道有這樣的函式會怎麼處理。 程式碼很短,只有8行。 <?php $num = []; //php 5.3以下請改用$num = array(); for($i = 0;$i< 100;$i++){ $num[] = rand(1,6); } sort($num); foreach(array_count_values($num) as $key => $value){ echo '['.$key.'] =>'.$value.'%<br>'; } 如果有要求要列出產生陣列的內容,那要寫在sort($num)的前面。 否則會變成印出排序後的結果……… 這個範例用了幾個陣列函式……如果老師不准就別用了。 然後其實我覺得是我的話才不會出這種題目。 我寧願請原po去寫留言板。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.204.108.111 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1446983006.A.0E4.html
dudeboy: 他連ECHO輸出都不會 11/08 19:58
dudeboy: 而且你沒有賦予新鍵名 根本就不用sort($num)吧 11/08 20:10
dudeboy: 直接$num=(array_count_values($num));for 1to6."%<BR>"; 11/08 20:48
tkdmaf: 樓上,你有確實跑過sort($num)所顯示的差異性嗎? 11/08 20:56
tkdmaf: 我會建議你實際run過,應該就很清楚明白理由了。 11/08 20:58
bibo9901: 你要的只是array_count_value的回傳陣列,是1~6依序列出 11/08 21:20
bibo9901: 吧? 但這跟本不必sort啊, 如同三樓說的 -- 用個for就行 11/08 21:21
bibo9901: 了. 即使要sort也應該是用ksort把該陣列依鍵名排序 11/08 21:22
dudeboy: 我跑過了,我知道差異性,我說的是必要性 11/08 21:24
bibo9901: 看來"這種題目"還是需要的, 是吧? 11/08 21:24
tkdmaf: 因為我並沒有打算多用一個變數去接結果的打算。 11/08 21:50
tkdmaf: 我也沒說三樓的東西是有什麼問題。 11/08 21:51
tkdmaf: ksort也得在 array_count_values之後才能下不是嗎? 11/08 21:52
tkdmaf: 不是沒想過,只是我懶得多打幾行字而已。 11/08 21:53
tkdmaf: 然後我還是那句話,寧願去實際寫留言版,也不會出這種問題 11/08 21:54
tkdmaf: 如果是真的要出題,我寧願直接叫他們寫驗證碼…… 11/08 21:57
tkdmaf: 喔!我倒是看到3樓的寫法會有一個低機率bug了。 11/08 22:07
tkdmaf: 就是當100次輪循中只要至少有1次有1個數字沒出現……… 11/08 22:08
tkdmaf: 剛剛故意把他當大樂透的49個號碼來跑,發現的。 11/08 22:11
xdraculax: sort vs 存變數 只差在校能吧,程式長度沒啥差 11/09 08:26
xdraculax: 校能到底有啥差也不好確定也不需要確定@@ 11/09 08:28
xdraculax: 這種題目就是符合學校會出的吧,如果是業界可以改成投 11/09 08:31
xdraculax: 票跟抽獎,比較實際的東西 11/09 08:31