Gå til innhold

Random tall...?


Anbefalte innlegg

Jeg sliter litt med å få ut 20 forskjellige tall mellom 1 og 75.

Problemet mitt er at jeg noen ganger får samme tall. Jeg har fjernet en del med if'er , men så har det seg slik at programmeringslogikken min ikke stemmer overens med resultatene til scriptet.

Her er det jeg har kokt sammen, og hva er gale?

 

<?php

// skal skrive ut 20 forskjellige tall

for($i=1; $i<=20; $i++)

{

$tallTabell[$i] = rand(1,75);

$lengde = $i;



for($j=1; $j<=$lengde; $j++)

{

 if($i != $j)

 {

 	if($tallTabell[$i] == $tallTabell[$j])

 	{

   $tallTabell[$i] = rand(1,75);	

 	}

 }

}

echo ("$i: ");

echo ("$tallTabell[$i]<br>");

}

// test for å se om jeg får like tall

for($i=1; $i<=20; $i++)

{

for($j=1; $j<=20; $j++)

{

 if($i != $j)

 {

 	if($tallTabell[$i] == $tallTabell[$j])

 	{

   echo("Like: $i  og $j <br>");

 	}

 }	

}

}

?>

Lenke til kommentar
Videoannonse
Annonse

Jeg tror problemet er at når du fanger opp en sammenfallende verdi, så risikerer du ved neste kall til rand() å få en ny sammenfallende verdi.

 

Til slike tilfeller er funksjoner greie å ha (øker lesbarheten veldig).

 

Tror dette skal virke (har ikke testet det)

 


<?php 

// skal skrive ut 20 forskjellige tall 

  $tallTabell = Array(); 



for($i=0; $i<20; $i++) 

{ 

 //Hente nytt unikt tilfeldig tall

  $tall = rand(1,75); 

  while(isNumberInList($tall,$tallTabell)) { $tall = rand(1,75); }

  

  $tallTabell[$i] = $tall; 

  $lengde = $i; 

   

  echo ("$i: "); 

  echo ("$tallTabell[$i]<br>"); 

} 





function isNumberInList($intNumber,$int_List)

{

   $bolRetVal  = false;

   for($i=0;$i<count($int_List);$i++)

   {

       if($int_List[$i] == $intNumber) {   $bolRetVal = true;break;}

   }



  return $bolRetVal;

}

?>

Lenke til kommentar
  • 3 uker senere...

Her er resultatet av den hjelpen jeg fikk.

 

Dette er for dere som spiller Extra 8)

 

<form name="extra" method="post" action="<?php $_server['PHP_SELF'] ?>">

 <b>For deg som spiller Extra</b>

 <table width="150" border="1">

 <tr>

   <td width="20" bgcolor="white"><input type="checkbox" name="1"></td>

   <td width="20" bgcolor="white"><input type="checkbox" name="2"></td>

   <td width="20" bgcolor="white"><input type="checkbox" name="3"></td>

   <td width="20" bgcolor="white"><input type="checkbox" name="4"></td>

   <td width="20" bgcolor="white"><input type="checkbox" name="5"></td>

 </tr>

 <tr>

   <td width="20" bgcolor="white"><input type="checkbox" name="6"></td>

   <td width="20" bgcolor="gray"><input type="checkbox" name="7"></td>

   <td width="20" bgcolor="gray"><input type="checkbox" name="8"></td>

   <td width="20" bgcolor="gray"><input type="checkbox" name="9"></td>

   <td width="20" bgcolor="white"><input type="checkbox" name="10"></td>

 </tr>

 <tr>

   <td width="20" bgcolor="white"><input type="checkbox" name="11"></td>

   <td width="20" bgcolor="gray"><input type="checkbox" name="12"></td>

   <td width="20" bgcolor="gray"><input type="checkbox" name="13"></td>

   <td width="20" bgcolor="gray"><input type="checkbox" name="14"></td>

   <td width="20" bgcolor="white"><input type="checkbox" name="15"></td>

 </tr>

 <tr>

   <td width="20" bgcolor="white"><input type="checkbox" name="16"></td>

   <td width="20" bgcolor="gray"><input type="checkbox" name="17"></td>

   <td width="20" bgcolor="gray"><input type="checkbox" name="18"></td>

   <td width="20" bgcolor="gray"><input type="checkbox" name="19"></td>

   <td width="20" bgcolor="white"><input type="checkbox" name="20"></td>

 </tr>

 <tr>

   <td width="20" bgcolor="white"><input type="checkbox" name="21"></td>

   <td width="20" bgcolor="white"><input type="checkbox" name="22"></td>

   <td width="20" bgcolor="white"><input type="checkbox" name="23"></td>

   <td width="20" bgcolor="white"><input type="checkbox" name="24"></td>

   <td width="20" bgcolor="white"><input type="checkbox" name="25"></td>

 </tr>

</table>

<input type="submit" name="trykk" value="Trykk">



</form>  









<?php

// skal skrive ut 19 forskjellige tall 

  $tallTabell = Array(); 



for($i=0; $i<19; $i++) 

{ 

 //Hente nytt unikt tilfeldig tall 

   $tall = rand(1,75); 

   while(erNummerITabell($tall,$tallTabell)) 

   {

   	$tall = rand(1,75); 

} 

   

  $tallTabell[$i] = $tall; 

  $lengde = $i;   

} 





function erNummerITabell($intNummer,$int_List) 

{ 

   $bolRetVal  = false; 

   for($i=0;$i<count($int_List);$i++) 

   { 

       if($int_List[$i] == $intNummer) 

 {

 	$bolRetVal = true;break;

 } 

   } 

return $bolRetVal; 

} 

/*

// test for å se om jeg får like tall

for($i=1; $i<=20; $i++)

{

for($j=1; $j<=20; $j++)

{

 if($i != $j)

 {

 	if($tallTabell[$i] == $tallTabell[$j])

 	{

   echo("Like: $i  og $j <br>");

 	}

 }	

}

}*/





/********************************

* Laget av: Jan-Terje Sørensen

* Hjemmeside: php.senteret.net

* Dato: 17.08.03

*********************************/

?> 



<?php

//teste om det er plasert inn 6 F'er

$f=0;



if($_POST['1']){ $f++;}

if($_POST['2']){ $f++;}

if($_POST['3']){ $f++;}

if($_POST['4']){ $f++;}

if($_POST['5']){ $f++;}

if($_POST['6']){ $f++;}

if($_POST['7']){ $f++;}

if($_POST['8']){ $f++;}

if($_POST['9']){ $f++;}

if($_POST['10']){ $f++;}

if($_POST['11']){ $f++;}

if($_POST['12']){ $f++;}

if($_POST['13']){ $f++;}

if($_POST['14']){ $f++;}

if($_POST['15']){ $f++;}

if($_POST['16']){ $f++;}

if($_POST['17']){ $f++;}

if($_POST['18']){ $f++;}

if($_POST['19']){ $f++;}

if($_POST['20']){ $f++;}

if($_POST['21']){ $f++;}

if($_POST['22']){ $f++;}

if($_POST['23']){ $f++;}

if($_POST['24']){ $f++;}

if($_POST['25']){ $f++;}



if($f != 6)

{

echo ("Du fyllte inn bare $f F'er<br>");

echo ("Du må fylle inn 6 F'er");

return;

}



?>



 <table width="150" border="1">

 <tr>

     <td width="20" bgcolor="white"><?php $a=0;  if($_POST['trykk']) { if($_POST['1']) { echo ("F");}else{echo("$tallTabell[$a]");$a++; } }?></td>

     <td width="20" bgcolor="white"><?php if($_POST['trykk']) { if($_POST['2']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} }?></td>

     <td width="20" bgcolor="white"><?php if($_POST['trykk']) { if($_POST['3']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} }?></td>

     <td width="20" bgcolor="white"><?php if($_POST['trykk']) { if($_POST['4']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} }?></td>

     <td width="20" bgcolor="white"><?php if($_POST['trykk']) { if($_POST['5']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} }?></td>

 </tr>

 <tr>

     <td width="20" bgcolor="white"><?php if($_POST['trykk']) { if($_POST['6']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} } ?></td>

     <td width="20" bgcolor="gray"><?php if($_POST['trykk']) { if($_POST['7']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} } ?></td>

     <td width="20" bgcolor="gray"><?php if($_POST['trykk']) { if($_POST['8']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} } ?></td>

     <td width="20" bgcolor="gray"><?php if($_POST['trykk']) { if($_POST['9']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} } ?></td>

     <td width="20" bgcolor="white"><?php if($_POST['trykk']) { if($_POST['10']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} } ?></td>

 </tr>

 <tr>

     <td width="20" bgcolor="white"><?php if($_POST['trykk']) { if($_POST['11']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} } ?></td>

     <td width="20" bgcolor="gray"><?php if($_POST['trykk']) { if($_POST['12']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} } ?></td>

     <td width="20" bgcolor="gray"><?php if($_POST['trykk']) { if($_POST['13']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} } ?></td>

     <td width="20" bgcolor="gray"><?php if($_POST['trykk']) { if($_POST['14']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} } ?></td>

     <td width="20" bgcolor="white"><?php if($_POST['trykk']) { if($_POST['15']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} } ?></td>

 </tr>

 <tr>

   <td width="20" bgcolor="white"><?php if($_POST['trykk']) { if($_POST['16']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} } ?></td>

   <td width="20" bgcolor="gray"><?php if($_POST['trykk']) { if($_POST['17']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} } ?></td>

   <td width="20" bgcolor="gray"><?php if($_POST['trykk']) { if($_POST['18']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} } ?></td>

   <td width="20" bgcolor="gray"><?php if($_POST['trykk']) { if($_POST['19']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} } ?></td>

   <td width="20" bgcolor="white"><?php if($_POST['trykk']) { if($_POST['20']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} } ?></td>

 </tr>

 <tr>

   <td width="20" bgcolor="white"><?php if($_POST['trykk']) { if($_POST['21']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} } ?></td>

   <td width="20" bgcolor="white"><?php if($_POST['trykk']) { if($_POST['22']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} } ?></td>

   <td width="20" bgcolor="white"><?php if($_POST['trykk']) { if($_POST['23']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} } ?></td>

   <td width="20" bgcolor="white"><?php if($_POST['trykk']) { if($_POST['24']) { echo ("F"); }else{echo("$tallTabell[$a]");$a++;} } ?></td>

   <td width="20" bgcolor="white"><?php if($_POST['trykk']) { if($_POST['25']) { echo ("F"); }else{echo("$tallTabell[$a]");}} ?></td>

 </tr>

</table>

Lenke til kommentar


if($_POST['1']){ $f++;} 

if($_POST['2']){ $f++;} 

if($_POST['3']){ $f++;} 

if($_POST['4']){ $f++;} 

if($_POST['5']){ $f++;} 

if($_POST['6']){ $f++;} 

if($_POST['7']){ $f++;} 

if($_POST['8']){ $f++;} 

if($_POST['9']){ $f++;} 

if($_POST['10']){ $f++;} 

if($_POST['11']){ $f++;} 

if($_POST['12']){ $f++;} 

if($_POST['13']){ $f++;} 

if($_POST['14']){ $f++;} 

if($_POST['15']){ $f++;} 

if($_POST['16']){ $f++;} 

if($_POST['17']){ $f++;} 

if($_POST['18']){ $f++;} 

if($_POST['19']){ $f++;} 

if($_POST['20']){ $f++;} 

if($_POST['21']){ $f++;} 

if($_POST['22']){ $f++;} 

if($_POST['23']){ $f++;} 

if($_POST['24']){ $f++;} 

if($_POST['25']){ $f++;} 

:lol:

Verste jeg har sett! :D

 


for($teller=1; $teller<=25; $teller++){

  if($_POST[$teller]){ $f++;} 

}

Lenke til kommentar

  <tr> 

   <td width="20" bgcolor="white"><input type="checkbox" name="1"></td> 

   <td width="20" bgcolor="white"><input type="checkbox" name="2"></td> 

   <td width="20" bgcolor="white"><input type="checkbox" name="3"></td> 

   <td width="20" bgcolor="white"><input type="checkbox" name="4"></td> 

   <td width="20" bgcolor="white"><input type="checkbox" name="5"></td> 

 </tr> 

 <tr> 

   <td width="20" bgcolor="white"><input type="checkbox" name="6"></td> 

   <td width="20" bgcolor="gray"><input type="checkbox" name="7"></td> 

   <td width="20" bgcolor="gray"><input type="checkbox" name="8"></td> 

   <td width="20" bgcolor="gray"><input type="checkbox" name="9"></td> 

   <td width="20" bgcolor="white"><input type="checkbox" name="10"></td> 

 </tr> 

 <tr> 

   <td width="20" bgcolor="white"><input type="checkbox" name="11"></td> 

   <td width="20" bgcolor="gray"><input type="checkbox" name="12"></td> 

   <td width="20" bgcolor="gray"><input type="checkbox" name="13"></td> 

   <td width="20" bgcolor="gray"><input type="checkbox" name="14"></td> 

   <td width="20" bgcolor="white"><input type="checkbox" name="15"></td> 

 </tr> 

 <tr> 

   <td width="20" bgcolor="white"><input type="checkbox" name="16"></td> 

   <td width="20" bgcolor="gray"><input type="checkbox" name="17"></td> 

   <td width="20" bgcolor="gray"><input type="checkbox" name="18"></td> 

   <td width="20" bgcolor="gray"><input type="checkbox" name="19"></td> 

   <td width="20" bgcolor="white"><input type="checkbox" name="20"></td> 

 </tr> 

 <tr> 

   <td width="20" bgcolor="white"><input type="checkbox" name="21"></td> 

   <td width="20" bgcolor="white"><input type="checkbox" name="22"></td> 

   <td width="20" bgcolor="white"><input type="checkbox" name="23"></td> 

   <td width="20" bgcolor="white"><input type="checkbox" name="24"></td> 

   <td width="20" bgcolor="white"><input type="checkbox" name="25"></td> 

 </tr> 

 

Eneste forskjellen her er name. Bruk en løkke. For å få til </tr><tr> kan du legge en variabel som sjekker om tallet er 5,15,20 eller 25 og legger til en da.

Lenke til kommentar

skrev om en god del så scriptet i sin helhet blir lettere, riktignok har jeg ett eller annet sted gjort en feil som gjør at når man fyller inn bokser og trykker på knappen så sender den ut skjemma med alle felter utfylt som F, orker ikke se mer på det nå da jeg er litt trøtt, men anyways her er det:

 


<?php



echo("<form name="extra" method="post" action="".$_server['PHP_SELF']."">

 <b>For deg som spiller Extra</b>

 <table width="150" border="1">

 <tr>");



$buttonperline = "5";

$temp = 1;



/*sikkert unødvendig akkurat denne function, men jeg sleit litt med noe og skrev om litt fram og tilbake, men lot den være*/

function num($num){

return $num;

}



/*gidder ikke skrive alle linjene for hånd bare så man får noen gråe bokser vel*/

function color($i){

   if($i>=num("7") && $i<=num("9")){

     return "gray";

   }elseif($i>=num("12") && $i<=num("14")){

     return "gray";

   }elseif($i>=num("17") && $i<=num("19")){

     return "gray";

   }else{

     return "white";

   }

}



/*bare elsker sånne fine looper, så man slipper all html skrivinga*/

for($i=1; $i<=25;$i++){

      echo("<td width="20%" bgcolor="".color($i).""><input type="checkbox" name="$i" /></td>");



/*vi vil vel ikke ha alt på samme linja*/

    if($temp%$buttonperline==0) echo("n</tr>rn<tr>");

    $temp++;



}

echo("</tr>rn

</table>rn

<input type="submit" name="trykk" value="Trykk" />rn

</form>rn");      





// skal skrive ut 19 forskjellige tall

  $tallTabell = Array();



for($i=0; $i<=19; $i++)

{

 //Hente nytt unikt tilfeldig tall

     $tall = rand(1,75);

     while(erNummerITabell($tall,$tallTabell))

     {

        $tall = rand(1,75);

  }

  

  $tallTabell[$i] = $tall;

  $lengde = $i;   

}





function erNummerITabell($intNummer,$int_List)

{

   $bolRetVal  = false;

   for($i=0;$i<count($int_List);$i++)

   {

       if($int_List[$i] == $intNummer)

     {

        $bolRetVal = true;break;

     }

   }

  return $bolRetVal;

}



// test for å se om jeg får ulike tall

for($i=1; $i<=20; $i++)

{

  for($j=1; $j<=20; $j++)

  {

     if($i != $j)

     {

        if($tallTabell[$i] == $tallTabell[$j])

        {

           echo("Like: $i  og $j <br>");

        }

     }   

  }

}





//teste om det er plasert inn 6 F'er

$f=0;



for($x=1; $x<=25; $x++){

  if($_POST[$x]){ $f++;}

} 



if($f < 6)

{

  echo ("Du fyllte inn bare $f F'er<br>");

  echo ("Du må fylle inn 6 F'er");

  return;

}



echo("<table width="150" border="1">

 <tr>");



/*forklarte jeg denne forrige gang? antall bokser per linje er det ihvertfall*/

$buttonperline = "5";

$temp = 1;

for($i=1; $i<=25;$i++){



     echo("<td width="20%" bgcolor="".color($i)."">"); /*skrev denne linja bare en gang, men det blir riktig*/ 



/*tror dette skulle bli riktig selvom jeg ikke var helt sikker hvor det skulle stå $a=0; på første linja*/

     switch($i){

      case 1:

       $a=0;  

      break;

      default:

      break;

     }



     if(isset($_POST['trykk'])) { 

       if(isset($i)) { 

          echo ("F");

       }else{

          echo("$tallTabell[$a]");$a++; 

       } 

     }

     echo("</td>");



/*igjen vil jeg ikke ha alt på samme linja*/

    if($temp%$buttonperline==0) echo("n</tr>rn<tr>");

    $temp++;



}

echo("</tr>rn

</table>rn

");



?>

 

er litt trøtt nå så jeg ser ikke helt hvor feilen ligger...

Lenke til kommentar

ok litt mer våken nå så jeg fant feilene, tror alt skal være i orden nå, si ifra hvis noe mer klikker:

 


<?php



echo("<form name="extra" method="post" action="".$_server['PHP_SELF']."">

 <b>For deg som spiller Extra</b>

 <table width="150" border="1">

 <tr>");



$buttonperline = "5";

$temp = 1;



function color($i){



   if($i>="7" && $i<="9"){

     return "gray";

   }elseif($i>="12" && $i<="14"){

     return "gray";

   }elseif($i>="17" && $i<="19"){

     return "gray";

   }else{

     return "white";

   }

}



for($i=1; $i<=25;$i++){

      echo("<td width="20%" bgcolor="".color($i).""><input type="checkbox" name="$i" /></td>");



    if($temp%$buttonperline==0) echo("n</tr>rn<tr>");

    $temp++;



}

echo("</tr>rn

</table>rn

<input type="submit" name="trykk" value="Trykk" />rn

</form>rn");      





// skal skrive ut 19 forskjellige tall

  $tallTabell = Array();



for($i=0; $i<=19; $i++)

{

 //Hente nytt unikt tilfeldig tall

     $tall = rand(1,75);

     while(erNummerITabell($tall,$tallTabell))

     {

        $tall = rand(1,75);

  }

  

  $tallTabell[$i] = $tall;

  $lengde = $i;   

}





function erNummerITabell($intNummer,$int_List)

{

   $bolRetVal  = false;

   for($i=0;$i<count($int_List);$i++)

   {

       if($int_List[$i] == $intNummer)

     {

        $bolRetVal = true;break;

     }

   }

  return $bolRetVal;

}



// test for åe om jeg fålike tall

for($i=1; $i<=20; $i++)

{

  for($j=1; $j<=20; $j++)

  {

     if($i != $j)

     {

        if($tallTabell[$i] == $tallTabell[$j])

        {

           echo("Like: $i  og $j <br>");

        }

     }   

  }

}





//teste om det er plasert inn 6 F'er

$f=0;



for($i=1; $i<=25; $i++){

  if($_POST[$i]){ $f++;}

} 



if($f < 6){

  echo ("Du fyllte inn bare $f F'er<br>");

  echo ("Du må fylle inn 6 F'er");

  return;

}



if($f > 6){

  echo ("Du fyllte inn $f F'er<br>");

  echo ("Du må bare fylle inn 6 F'er");

  return;

}



echo("<table width="150" border="1">

 <tr>");



for($i=1; $i<=25;$i++){



     echo("<td width="20%" bgcolor="".color($i)."">"); 



     switch($i){

      case 1:

       $a=0;  

      break;

      default:

      break;

     }



     if(isset($_POST['trykk'])) { 

       if(!isset($_POST["$i"])) { 

          echo ("F");

       }else{

          echo("$tallTabell[$a]");$a++; 

       } 

     }

     echo("</td>");



    if($temp%$buttonperline==0) echo("n</tr>rn<tr>");

    $temp++;



}

echo("</tr>rn

</table>rn

");



?>

 

har aldri spilt Extra så jeg veit ingenting om det spillet, men jeg tror scriptet fungerer som du ville nå, og det er mye lettere å gjøre endringer senere, hvis du bruker masse looper o.l. som jeg har gjort her istedenfor å skrive det som du først gjorde, blir så altfor mye hardkoding på den måten...

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...