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
Aspire
post
Post #2





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

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


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


Działa, ale chciałbym to zrobić bardziej "po mojemu".

Ten post edytował Aspire 21.04.2013, 18:31:59
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: 12.10.2025 - 17:05