1.在定义getbase()时,要取一个4位的随机数,并且数字不能重复出现。
function getbase(){
for($i=0;$i<5;$i++){
while(in_array(${"num".$i},$numarray)){
${"num".$i}=getrand();
}
$numarray[]=${"num".$i};
$basenum.=${"num".$i};
}
return $basenum;
}
现在我要将条件写成$i<5才能取到4个随机数,有点想不通;而且现在取不到“0”。
2.需要一个js,用来限定输入的范围,只能是数字,而且数字不能重复出现。即:允许输入3456,不允许3455。大家看看应该怎么做。

解决方案 »

  1.   

    2.
    <script language=javascript>
    function checkNumber(num){
    var re=/^(\d)(\d)(\d)(\d)$/;
    var ra=re.exec(num);
    if(ra==null)return false;
    for(i=1;i<=3;i++)
     for(j=i+1;j<=4;j++)
       if(ra[i]==ra[j])
        {result=false;return result;}
    return true;
    }
    alert(checkNumber("1235"));
    </script>
      

  2.   

    2.
    <script language=javascript>
    function checkNumber(num){
    var re=/^(\d)(\d)(\d)(\d)$/;
    var ra=re.exec(num);
    if(ra==null)return false;
    for(i=1;i<=3;i++)
     for(j=i+1;j<=4;j++)
       if(ra[i]==ra[j])return false;
    return true;
    }
    alert(checkNumber("1235"));
    </script>
      

  3.   

    <?php
    srand((double)microtime()*100000);
    $randval = rand(1000,9999);
    $tmp1=$randval;
    $tmp=$randval;
    echo $randval."<br>";
    $flg=0;
    for($i=0;$i<4;$i++)
    {
    if($flg==1)
    break;
    for($j=0;$j<4;$j++)
    {
    if($i==$j)
    break;
    if(substr($tmp,$j,1)==substr($tmp1,$i,1))
    {
    $flg=1;
    break;
    }
    }
    }
    echo $flg."<br>";
    while($flg==1)
    {
    $randval = rand(1000,9999);
    $tmp=$randval;
    $tmp1=$randval;
    echo $randval."<br>";
    $flg=0;
    for($i=0;$i<4;$i++)
    {
    if($flg==1)
    break;
    for($j=0;$j<4;$j++)
    {
    if($i==$j)
    break;
        if(substr($tmp,$j,1)==substr($tmp1,$i,1))
    {
    $flg=1;
    break;
    }
    }
    }
    }
    echo $randval;
    ?>
    最后得到的
    $randval就是一个没有重复数字的四位数
      

  4.   

    改好了,感谢两位提供的帮助。不过我没有用realyfly的方法,觉得那样还是太麻烦,按照自己的思路写的要简单些。呵呵。
    下面是完整的代码:<title>猜数字</title>
    <style type="text/css">
    .font {  font-family: "system"; font-size: 14pt; color: #3333FF; text-decoration: none}
    .font a{  font-family: "system"; font-size: 14pt; color: #3333FF; text-decoration: none}
    .text {background-color: #ffffff; border-bottom: #000000 1px solid; border-left: #ffffff 0px solid; border-right: #ffffff 0px solid; border-top: #ffffff 0px solid; color: #000000; font-size: 9pt }
    .submit {background-color: #ffcf0f; border-bottom: #ffcf0f 1px solid; border-left: #ffcf0f 1px solid; border-right: #ffcf0f 1px solid; border-top: #ffcf0f 1px solid; color: #000000; font-size: 9pt }
    </style>
    <script language=javascript>
    function checkNumber(num){
    var re=/^(\d)(\d)(\d)(\d)$/;
    var ra=re.exec(num);
    if(ra==null)return false;
    for(i=1;i<=3;i++)
     for(j=i+1;j<=4;j++)
       if(ra[i]==ra[j])
    return false;
    return true;
    }
    function check(){
    if(checkNumber(document.main.guessnum.value) == false) {
    alert("输入有误");
    document.main.guessnum.value="";
    }
    return true;
    }
    </script>
    <center><h1><B>猜数字</B></h1><p></center>
    <?
    function getrand(){
    srand((double)microtime()*100000000);
    $num=rand(0,9);
    return $num;
    }
    function getbase(){
    $num=getrand();
    $numarray[]=$num;
    $basenum.=$num;
    for($i=0;$i<3;$i++){
    ${"num".$i}=getrand();
    while(in_array(${"num".$i},$numarray)){
    ${"num".$i}=getrand();
    }
    $numarray[]=${"num".$i};
    $basenum.=${"num".$i};
    }
    return $basenum;
    }
    function judgenum($guessnum,$basenum){
    $a=0;
    $b=0;
    for($i=0;$i<4;$i++){
    if(substr($guessnum,$i,1)==substr($basenum,$i,1))
    $a++;
    for($j=0;$j<4;$j++){
    if(substr($guessnum,$i,1)==substr($basenum,$j,1) && substr($guessnum,$i,1)<>substr($basenum,$i,1))
    $b++;
    }
    }
    return $a."A".$b."B";
    }
    if($submit){
    if(!isset($basenum)) 
    $basenum=getbase();
    if($guessnum<>$basenum){
    echo '<center><form method=post action='.$PHP_SELF.' name=main>';
    echo '<table border=1 bordercolordark=blue bordercolorlight=white cellpadding=6 cellspacing=0 class=font>';
    echo '<tr><td colspan=2 align=center>您要猜的数字在这里:XXXX</td></tr>';
    echo '<tr><td colspan=2 align=center>'.$username.':请写下你想的数字吧!<input type=text name="guessnum" size=8 maxlength=4 class=text></td></tr>';
    echo '<tr><td align=center><input type=submit name=submit value="决定了" class=submit onclick=javascript:check()></td><td align=center><input type=submit name=reset value="重新来过" class=submit onclick=javascript:window.load('.$PHP_SELF.')></td></tr>';
    $guessarray=explode("/",$guessline);
    foreach($guessarray as $guessednum){
    if($guessednum<>"")
    echo '<tr><td>'.$guessednum.'</td><td>'.judgenum($guessednum,$basenum).'</td></tr>';
    }
    if($guessnum)
    echo '<tr><td>'.$guessnum.'</td><td>'.judgenum($guessnum,$basenum).'</td></tr>';
    $guessline.=$guessnum."/";
    echo '<input type=hidden name=basenum value='.$basenum.'>';
    echo '<input type=hidden name=guessline value='.$guessline.'>';
    echo '<input type=hidden name=username value='.$username.'>';
    echo '</table></form>';
    }
    else{
    echo '<center><table border=1 bordercolordark=blue bordercolorlight=white cellpadding=6 cellspacing=0 class=font>';
    echo '<tr><td colspan=2 align=center>您要猜的数字在这里:'.$basenum.'</td></tr>';
    echo '<tr><td align=center>Cool!!!!</td><td align=center><a href='.$PHP_SELF.'>重来</a></td></tr>';
    $guessarray=explode("/",$guessline);
    foreach($guessarray as $guessednum){
    if($guessednum<>"")
    echo '<tr><td>'.$guessednum.'</td><td>'.judgenum($guessednum,$basenum).'</td></tr>';
    }
    if($guessnum)
    echo '<tr><td>'.$guessnum.'</td><td>'.judgenum($guessnum,$basenum).'</td></tr>';
    echo '</table>';
    }
    }
    else
    {
    echo '<center><form method=post name=getuser action='.$PHP_SELF.' class=font>';
    echo '输入大名:<input type=input name=username size=16 class=text value='.$username.'>';
    echo '<br><p>';
    echo '<input type=submit name="submit" value="开始" class=submit>';
    echo '</form></center>';
    }
    ?>