Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Losowanie bez zwracania
Aspire
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 24.03.2011

Ostrzeżenie: (0%)
-----


Witam, chcę sobie wylosować 6 liczb (bez zwracania) z 49 - lotek (IMG:style_emoticons/default/wink.gif)
Napisałem taki skrypt:
  1. <?php
  2. $start = microtime(true);
  3. function losuj()
  4. {
  5. $t = range(1,49);
  6. $w = array_rand($t,6);
  7. foreach ($w as $l) { echo $l." "; }
  8. }
  9. for($i=1;$i<=10;$i++) { echo $i.") "; losuj(); echo "\n<br />"; }
  10. echo "<hr>";
  11. echo 'Czas generowania strony: ' . round(microtime(true) - $start, 3).'s';
  12. ?>

ale pomimo ustawienia zakresu od 1 do 49 często dostaję 0.
Np:
0 13 15 22 19 30
Dodam, że nie zauważyłem, żeby któraś z wylosowanych liczby wykraczała poza 49. Dlaczego tak się dzieje? Z góry dzięki (IMG:style_emoticons/default/wink.gif)
Ustawienie range(2,50) też nic nie daje ;/

Ten post edytował Aspire 21.04.2013, 18:01:34
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
sajegib
post
Post #2





Grupa: Zarejestrowani
Postów: 352
Pomógł: 59
Dołączył: 16.01.2013

Ostrzeżenie: (0%)
-----


ale co tu do robienia po twojemu? Możesz ten efekt osiągnąć na wiele sposobów, ale chodzi chyba o to, żeby działało?

  1. $tab = range(1,49); // ---> tutaj ustalasz liczby 1-49
  2. $wynik = array();
  3. for($i=0;$i<10;$i++)
  4. {
  5. $lntab = count($tab)-1; /*zapisujemy długość tablicy - 1 ponieważ tablica
  6.   jest indeksowana domyślnie od 0, a count liczy od 1*/
  7. $r = mt_rand(0,$lntab); /*zapisujemy losową liczbę*/
  8. $wynik[] = $tab[$r]; /*dodajemy do tablicy wynikowej */
  9. $tab[$r] = $tab[$lntab]; /*w wylosowane miejsce przypisujemy
  10.   ostatni element z tablicy*/
  11. unset($tab[$lntab]); /*usuwamy ostatni element*/
  12. }
  13. sort($wynik); /*sortujemy*/
  14. print_r($wynik); /*wyrzucamy na ekran*/
  15.  


Ten post edytował sajegib 21.04.2013, 18:34:51
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 07:53