Re: Php亂數問題 急急急!

看板PHP作者 (皮皮快跑)時間10年前 (2015/11/08 19:43), 編輯推噓5(5018)
留言23則, 4人參與, 最新討論串3/4 (看更多)
※ 引述《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

11/08 19:58, , 1F
他連ECHO輸出都不會
11/08 19:58, 1F

11/08 20:10, , 2F
而且你沒有賦予新鍵名 根本就不用sort($num)吧
11/08 20:10, 2F

11/08 20:48, , 3F
直接$num=(array_count_values($num));for 1to6."%<BR>";
11/08 20:48, 3F

11/08 20:56, , 4F
樓上,你有確實跑過sort($num)所顯示的差異性嗎?
11/08 20:56, 4F

11/08 20:58, , 5F
我會建議你實際run過,應該就很清楚明白理由了。
11/08 20:58, 5F

11/08 21:20, , 6F
你要的只是array_count_value的回傳陣列,是1~6依序列出
11/08 21:20, 6F

11/08 21:21, , 7F
吧? 但這跟本不必sort啊, 如同三樓說的 -- 用個for就行
11/08 21:21, 7F

11/08 21:22, , 8F
了. 即使要sort也應該是用ksort把該陣列依鍵名排序
11/08 21:22, 8F

11/08 21:24, , 9F
我跑過了,我知道差異性,我說的是必要性
11/08 21:24, 9F

11/08 21:24, , 10F
看來"這種題目"還是需要的, 是吧?
11/08 21:24, 10F

11/08 21:50, , 11F
因為我並沒有打算多用一個變數去接結果的打算。
11/08 21:50, 11F

11/08 21:51, , 12F
我也沒說三樓的東西是有什麼問題。
11/08 21:51, 12F

11/08 21:52, , 13F
ksort也得在 array_count_values之後才能下不是嗎?
11/08 21:52, 13F

11/08 21:53, , 14F
不是沒想過,只是我懶得多打幾行字而已。
11/08 21:53, 14F

11/08 21:54, , 15F
然後我還是那句話,寧願去實際寫留言版,也不會出這種問題
11/08 21:54, 15F

11/08 21:57, , 16F
如果是真的要出題,我寧願直接叫他們寫驗證碼……
11/08 21:57, 16F

11/08 22:07, , 17F
喔!我倒是看到3樓的寫法會有一個低機率bug了。
11/08 22:07, 17F

11/08 22:08, , 18F
就是當100次輪循中只要至少有1次有1個數字沒出現………
11/08 22:08, 18F

11/08 22:11, , 19F
剛剛故意把他當大樂透的49個號碼來跑,發現的。
11/08 22:11, 19F

11/09 08:26, , 20F
sort vs 存變數 只差在校能吧,程式長度沒啥差
11/09 08:26, 20F

11/09 08:28, , 21F
校能到底有啥差也不好確定也不需要確定@@
11/09 08:28, 21F

11/09 08:31, , 22F
這種題目就是符合學校會出的吧,如果是業界可以改成投
11/09 08:31, 22F

11/09 08:31, , 23F
票跟抽獎,比較實際的東西
11/09 08:31, 23F
文章代碼(AID): #1MFpLU3a (PHP)
討論串 (同標題文章)
文章代碼(AID): #1MFpLU3a (PHP)