作者wkliu (wkliu)
看板PHP
标题Re: [请益] 求救!解不开啊~ 不重复抽签的谜题!60 …
时间Fri Oct 5 17:27:01 2007
这个方法有些小问题
※ 引述《kaijajan (喔喔 :o)》之铭言:
: 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个元素
你还必须写一个搬移的function 把随机选到的数字之後的全部往前搬
例如: 随机选到 1, 把b[1]的值删除, 还必须把b[2]一直到b[60-i] 全部往前移一个
位置, 这样你後面的才可以用 rand(1, 60-i), 假设i是第几次作
: 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: 61.228.76.213