作者tkdmaf (皮皮快跑)
看板PHP
標題Re: Php亂數問題 急急急!
時間Sun Nov 8 19:43:23 2015
※ 引述《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://webptt.com/m.aspx?n=bbs/PHP/M.1446983006.A.0E4.html
1F:推 dudeboy: 他連ECHO輸出都不會 11/08 19:58
2F:推 dudeboy: 而且你沒有賦予新鍵名 根本就不用sort($num)吧 11/08 20:10
3F:推 dudeboy: 直接$num=(array_count_values($num));for 1to6."%<BR>"; 11/08 20:48
4F:→ tkdmaf: 樓上,你有確實跑過sort($num)所顯示的差異性嗎? 11/08 20:56
5F:→ tkdmaf: 我會建議你實際run過,應該就很清楚明白理由了。 11/08 20:58
6F:→ bibo9901: 你要的只是array_count_value的回傳陣列,是1~6依序列出 11/08 21:20
7F:→ bibo9901: 吧? 但這跟本不必sort啊, 如同三樓說的 -- 用個for就行 11/08 21:21
8F:→ bibo9901: 了. 即使要sort也應該是用ksort把該陣列依鍵名排序 11/08 21:22
9F:推 dudeboy: 我跑過了,我知道差異性,我說的是必要性 11/08 21:24
10F:→ bibo9901: 看來"這種題目"還是需要的, 是吧? 11/08 21:24
11F:→ tkdmaf: 因為我並沒有打算多用一個變數去接結果的打算。 11/08 21:50
12F:→ tkdmaf: 我也沒說三樓的東西是有什麼問題。 11/08 21:51
13F:→ tkdmaf: ksort也得在 array_count_values之後才能下不是嗎? 11/08 21:52
14F:→ tkdmaf: 不是沒想過,只是我懶得多打幾行字而已。 11/08 21:53
15F:→ tkdmaf: 然後我還是那句話,寧願去實際寫留言版,也不會出這種問題 11/08 21:54
16F:→ tkdmaf: 如果是真的要出題,我寧願直接叫他們寫驗證碼…… 11/08 21:57
17F:→ tkdmaf: 喔!我倒是看到3樓的寫法會有一個低機率bug了。 11/08 22:07
18F:→ tkdmaf: 就是當100次輪循中只要至少有1次有1個數字沒出現……… 11/08 22:08
19F:→ tkdmaf: 剛剛故意把他當大樂透的49個號碼來跑,發現的。 11/08 22:11
20F:推 xdraculax: sort vs 存變數 只差在校能吧,程式長度沒啥差 11/09 08:26
21F:→ xdraculax: 校能到底有啥差也不好確定也不需要確定@@ 11/09 08:28
22F:→ xdraculax: 這種題目就是符合學校會出的吧,如果是業界可以改成投 11/09 08:31
23F:→ xdraculax: 票跟抽獎,比較實際的東西 11/09 08:31