Losowe wybieranie elementów tablicy


(Radmistrz2) #1

A więc tak. Napisałem sobie skrypt, który generuje losowo 5 wartości z tablic. Oto on:

<?php error_reporting(E_ALL); 


$tablica[0] = '0';

$tablica[1] = '1';

$tablica[2] = '2';

$tablica[3] = '3';

$tablica[4] = '4';

$tablica[5] = '5';

$tablica[6] = '6';

$tablica[7] = '7';

$tablica[8] = '8';

$tablica[9] = '9';


srand(time());

$losowa1 = rand(0, 9);

echo $tablica[$losowa1];

echo '
';

echo '
';


srand(time());

$losowa2 = rand(0, 9);

echo $tablica[$losowa2];

echo '
';

echo '
';


srand(time());

$losowa3 = rand(0, 9);

echo $tablica[$losowa3];

echo '
';

echo '
';


srand(time());

$losowa4 = rand(0, 9);

echo $tablica[$losowa4];

echo '
';

echo '
';


srand(time());

$losowa5 = rand(0, 9);

echo $tablica[$losowa5];

echo '
';

echo '
';

?>

I teraz problem. Dla czego za każdym razem wartosc funkcji rand() jest identyczna? Dało by się to zmienic? PS. Sorki że tyle głowę zawracam wam ale uczę się programowania i to takie cwiczenia:D


(Fiołek) #2

Użyj raz funkcji srand().


(Radmistrz2) #3

hmm z tego co mi się wydaje to nie da się w pozyższym kodzie zrobic tak, aby wartości się nie powtażały. Czy jeśli to samo wyświetlił bym za pomocą pętli for to dało by się coś wykombinowac?


(Fiołek) #4

Jeśli chcesz aby nie wystąpiło ani razu powtórzenie to ja bym zrobił tak:

$liczby = range(0, 9);

shuffle($liczby);

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

{

   echo $tablica[($liczby[i])];

   echo '
';

   echo '
'; 

}

Przed tym dajesz jeszcze deklaracje $tablica i masz pewność, że liczba(wartość) nie powtórzy Ci się ani razu..