/ 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
3 tilfældige tal med rand()
Fra : Kasper Damkjær


Dato : 13-05-02 22:39

Jeg mangler lidt inspiration. Jeg skal bruge 3 tilfældige tal mellem 1 og
x, hvor x er antal rows i et mysqltable. Det er i sig selv ikke noget
problem, bortset fra at det det samme tal ikke må forekomme flere gange
på samme tid.

Hidtil har jeg kun haft brug for 2 tal, hvilket jeg gjorde med:

//Lav to random tal mellem 1 og antal records
srand ((double) microtime() * 1000000);
$randval1 = rand(1, $antal_banner);
$randval2 = rand(1, $antal_banner);

// Sikrer at de to tal ikke er ens
while ($randval1 == $randval2){
$randval2 = rand(1, $antal_banner);
}


Hvordan tager jeg højde for det 3. tal smartest? Det kan jo gøres med to
ekstra while-løkker, der hhv. checker om 1=3 og 2=3, men kan det ikke
gøres bedre?


--
Kasper Damkjær
http://www.damkjaer.net/

"Det forstår jeg ikke, det burde virke." [TM]

 
 
Johan Holst Nielsen (14-05-2002)
Kommentar
Fra : Johan Holst Nielsen


Dato : 14-05-02 07:25

> //Lav to random tal mellem 1 og antal records
> srand ((double) microtime() * 1000000);
> $randval1 = rand(1, $antal_banner);
> $randval2 = rand(1, $antal_banner);
>
> // Sikrer at de to tal ikke er ens
> while ($randval1 == $randval2){
> $randval2 = rand(1, $antal_banner);
> }

Du kan lige så godt forsætte i samme spor?

while(($randval1 == $randval3) || ($randval2 == $randval3)) {
$randval3 = rand(1, $antal_banner);
}

//Der er IKKE taget forbehold for hvis der f.eks. kun er 1 eller 2 bannere så
du bør lave en
//if($antal_banner < 3) {
// echo "We got a kind of a problem?";
// exit;
//}

mvh
Johan


Per Thomsen (14-05-2002)
Kommentar
Fra : Per Thomsen


Dato : 14-05-02 15:59


"Kasper Damkjær" <usenet@damkjaer.net> wrote in message
news:Xns920DF0702D5AAusenetdamkjaernet@194.19.194.7...
> Jeg mangler lidt inspiration. Jeg skal bruge 3 tilfældige tal mellem 1 og
> x, hvor x er antal rows i et mysqltable. Det er i sig selv ikke noget
> problem, bortset fra at det det samme tal ikke må forekomme flere gange
> på samme tid.
>
[snip]

Man kunne jo udnytte nogle at de laekre array funktioner der findes i PHP4

// $x = mysql_num_rows(); // or whatever.
$rows = range(1, $x);
srand ((float)microtime()*1000000);
shuffle($rows);
$rand1 = $rows[0];
$rand2 = $rows[1];
$rand3 = $rows[2];

MVH Per Thomsen,
http://www.pert.dk/





Kasper Damkjær (14-05-2002)
Kommentar
Fra : Kasper Damkjær


Dato : 14-05-02 20:07

Per Thomsen skrev: (messageID: <news:abr8oj$1so8$1@news.cybercity.dk>)

> Man kunne jo udnytte nogle at de laekre array funktioner der findes i
> PHP4

Det må jeg prøve at lege lidt med - det var netop sådan en type løsning,
jeg var ude efter.


--
Kasper Damkjær
http://www.damkjaer.net/

"Det forstår jeg ikke, det burde virke." [TM]

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

Månedens bedste
Årets bedste
Sidste års bedste