Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Losowanie liczb bez 0
pr0woKator
post
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 1
Dołączył: 9.02.2012

Ostrzeżenie: (10%)
X----


Witam,

mam taki kod:

  1. $nowe_liczby = range(1,49);
  2. $klucze = array_rand($nowe_liczby, 6);
  3. sort($klucze);
  4. $nowe_liczby = implode(",", $klucze);
  5. echo $nowe_liczby;


Ładnie on losuje mi te liczby i wypisuje po przecinku, ale... Czasami losuje 0 a ja chcę tylko liczby z przedziału 1-49. Czy jest jakaś inna funkcja aby to zrobić?
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




  1. srand((double)microtime()*1000000);
  2.  
  3. $ile = 6;
  4. $zilu = 49;
  5. $l=array();
  6.  
  7. for ($i=0;$i<$ile;$i++) {
  8. $liczba = rand(1, $zilu);
  9. if (in_array($liczba,$l)) $i--;
  10. else $l[$i] = $liczba;
  11. }
  12.  
  13. for ($i=0;$i<$ile;$i++) echo $l[$i]." ";


--------------------
Go to the top of the page
+Quote Post
pr0woKator
post
Post #3





Grupa: Zarejestrowani
Postów: 63
Pomógł: 1
Dołączył: 9.02.2012

Ostrzeżenie: (10%)
X----


Jakieś inne propozycje?
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #4





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Cytat(pr0woKator @ 17.12.2013, 21:36:49 ) *
Jakieś inne propozycje?

A co Ci się nie podoba w mojej?


--------------------
Go to the top of the page
+Quote Post
pr0woKator
post
Post #5





Grupa: Zarejestrowani
Postów: 63
Pomógł: 1
Dołączył: 9.02.2012

Ostrzeżenie: (10%)
X----


Głównie chodzi mi o to co jest nie tak w moim kodzie. Dlaczego to cholerne 0 występuje skoro jest 1,49
Go to the top of the page
+Quote Post
sowiq
post
Post #6





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Bo funkcja array_rand zwraca wylosowane indeksy, a nie wartości. Klucze są numerowane od 0, dlatego czasami dostajesz 0.
Cytat
Picks one or more random entries out of an array, and returns the key (or keys) of the random entries.


Spróbuj tak:
  1. $array = range(1, 49);
  2. shuffle($array);
  3.  
  4. $random = array_slice($array, 0, 6);
  5. sort($random);
  6.  
  7. echo implode($random, ', ');


Albo podobnie jak robiłeś wcześniej, ale zmieniając klucze:
  1. $nowe_liczby = range(1,49);
  2. $nowe_liczby = array_combine($nowe_liczby, $nowe_liczby);
  3.  
  4. $klucze = array_rand($nowe_liczby, 6);
  5. sort($klucze);
  6. $nowe_liczby = implode(",", $klucze);
  7. echo $nowe_liczby;

Go to the top of the page
+Quote Post
Kshyhoo
post
Post #7





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Bo wyciągasz klucze tablicy a nie jej elementy?

EDIT: @sowiq wygrywa smile.gif


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 21:31