作者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/cn.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