作者kaijajan (喔喔 :o)
看板PHP
标题Re: [请益] 求救!解不开啊~ 不重复抽签的谜题!60 …
时间Fri Oct 5 17:00:46 2007
1.产生2个阵列,大小分别为40(array a)及60(array b)
2.将1-60依序填入array b(填入方法随便,依序填最简单)
3.从array b中随机选取一个元素( rand(1, 60) )并填到array a的第一个元素
4.删除array b中刚刚选中的元素
5.此时array a有一个值介於1-60之间
而array b只剩59个元素
6.从array b中再取一个元素( rand(1, 59) )填到array a的第二个元素
7.删除选中的元素
重复6 7即可得到你要的结果
※ 引述《aptx1596 (maddog)》之铭言:
: 程式码如下,阵列中之数,一直都会有重复耶!
: 该怎嚜解决啊~想了3天3业还是解不开耶~
: PS:不是作业,只是想挑战一下!!
: --------------------------------------------------------------------------
: --------------------------------------------------------------------------
: --------------------------------------------------------------------------
: <?
: /****************************************
: 自1~60取随机数,放进大小为40格的阵列之中,
: 数字不可重复。有20支签不中。
: ****************************************/
: //--------[取随机基数]-------------------
: list($m, $t) = explode(" ",microtime());
: $d = (double) $m -(double) $t*1359;
: srand($d);
: //---------------------------------------
: /*************************************
: 1.建立阵列
: 2.随机产生数字
: 3.检查阵列内是否已有相同数字
: 3.1[有]回到 2 再次产生数字,接 3
: 3.2[无]数字PUSH进阵列,接 2
: 4.检查是否满400个了
: **************************************/
: $arr=array();
: $rd=rand(1,60);
: array_push($arr,$rd);
: do{
: $rd=rand(1,60);
: foreach($arr as $value)
: {
: if($rd == $value)
: {break;}
: else
: {
: array_push($arr,$rd);
: $arr_num++;
: break;
: }
: }
: }while(count($arr) <= 40);
: //-------------[列印阵列]-------------------
: foreach($arr as $key => $value)
: {
: echo "\$arr[{$key}] = {$value}<BR>\n";
: }
: $sss=array_count_values($arr);
: foreach($sss as $key => $value)
: {
: echo"{$key} = {$value}个<BR>";
: }
: ?>
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.210.60.5
※ 编辑: kaijajan 来自: 218.210.60.5 (10/05 17:01)