|
| Random værdier i array? Fra : Kasper Lund |
Dato : 23-10-05 17:52 |
|
Hej.
Jeg er ved at lære PHP og sidder med nogle forskellige opgaver.
En af opgaverne går ud på at vi skal lave en while løkke der løber
gennem et array med 10 forskellige tal, skriver den samlede værdi, hvor
mange lige tal der er valgt og hvor mange af de valgte tal der er mindre
end 10.
Indtil videre har jeg lavet følgende:
<?php
$rand_num = array(4,5,8,12,34,23,56,78,98,123,37,45,67,234,256,278,342,412);
$count=0;
$sum=0;
$lige=0;
$under=0;
while($count<10){
$i = array_rand($rand_num);
echo "$rand_num[$i]" . ", ";
$sum = $sum + $rand_num[$i];
if (($rand_num[$i] % 2) == 0){
$lige++;
}
if ($rand_num[$i] < 10){
$under++;
}
$count++;
}
echo "<br />" . "<br />" . "Den samlede sum er: " . "$sum";
echo "<br />" . "Der er: " . "$lige" . " lige tal.";
echo "<br />" . "Der er: " . "$under" . " tal der er under 10.";
?>
det virker sådan set fint nok, men tallene er jo ikke ligefrem
tilfældige - de er tilfældigt valgt ud fra et foruddefineret array men
jeg ville gerne have at der bliver valgt 10 tal ud fra et foruddefineret
"scope" f.eks. mellem 0 og 200.
Jeg har prøvet ved at oprette array'et på følgende måde:
$rand_num = array (rand(0, 200)); men det virker ikke.
Nogen der kan give mig nogle gode hints til hvad jeg skal forsøge med?
På forhånd tak for hjælpen.
/Kasper
| |
Troels Hansen (23-10-2005)
| Kommentar Fra : Troels Hansen |
Dato : 23-10-05 18:49 |
|
Kasper Lund wrote:
> Jeg har prøvet ved at oprette array'et på følgende måde:
> $rand_num = array (rand(0, 200)); men det virker ikke.
Du kan fylde det array i en for løkke.
$rand_num = array();
for($i=0;$i<10;$i++){
$rand_num[$i] = rand(0, 200);
}
| |
D. Johnson (23-10-2005)
| Kommentar Fra : D. Johnson |
Dato : 23-10-05 18:53 |
|
Kasper Lund skrev Den. 23-10-2005 18:52:
> det virker sådan set fint nok, men tallene er jo ikke ligefrem
> tilfældige - de er tilfældigt valgt ud fra et foruddefineret array men
> jeg ville gerne have at der bliver valgt 10 tal ud fra et foruddefineret
> "scope" f.eks. mellem 0 og 200.
>
> Jeg har prøvet ved at oprette array'et på følgende måde:
> $rand_num = array (rand(0, 200)); men det virker ikke.
Virker ikke, tjoe, men du får kun et array med en enkelt plads.
rand(0, 200) returnerer et enkelt tal, så du kunne jo gøre det nogle
gange, men
pas på du ikke får ens tal i dit array.
Du kunne indsætte i dit array som
$new_num = rand(0, 200);
$arr[] = $new_num;
Bare du tjekker at $new_num ikke allerede er i dit array før du
indsætter det.
Kør det i en løkke der genererer dit array.
Håber det var hints nok.
--
D. Johnson
/usr/sbin/athcool on
-25W, -20C
| |
Kasper Lund (23-10-2005)
| Kommentar Fra : Kasper Lund |
Dato : 23-10-05 19:39 |
|
Tak for svarene begge to, det var lige hvad jeg manglede..
| |
Per Thomsen (24-10-2005)
| Kommentar Fra : Per Thomsen |
Dato : 24-10-05 16:31 |
|
Kasper Lund wrote:
> Jeg har prøvet ved at oprette array'et på følgende måde:
> $rand_num = array (rand(0, 200)); men det virker ikke.
Du kan lige få en variant mere her:
$rand = range(0,200);
shuffle($rand);
$rand = array_slice( $rand, 0, 10 );
MVH Per Thomsen,
< http://www.pert.dk/>
| |
|
|