/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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/>

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste