Generowanie losowych liczb w PHP bez powtórzeń (funkcja losująca).
Przejdź do nawigacji
Przejdź do wyszukiwania
Dzisiaj kodując napotkałem na problem związany z generowaniem pseudo losowych liczb, bez powtórzeń.
Oficjalnie PHP nie posiada w sobie takiego mechanizmu więc zacząłem poszukiwania na google hasłem "jak wylosować liczby bez powtórzeń w php".
Niestety żaden pierdolony buc jej nie udostępnił w postaci gotowej (prawdopodobnie uznał że korona mu z głowy spadnie) tak więc wymaganą funkcję musiałem utworzyć samemu.
Poniżej mój gotowiec, wykorzystujący rekurencję.
function wylosuj_liczby_bez_powtorzen($najmniejsza,$najwieksza,$ilosc,$wykluczone='',$i='0') { for ($petla=$i;$petla<$ilosc;$petla++) { $losowa=rand($najmniejsza,$najwieksza); if ($wykluczone[$losowa]==$losowa) { return wylosuj_liczby_bez_powtorzen($najmniejsza,$najwieksza,$ilosc,$wykluczone,$petla); } else { $wykluczone[$losowa]=$losowa; print(">>$losowa<<<br>"); } } } </source> Przykład użycia <pre> wylosuj_liczby_bez_powtorzen(1,50,15); </source> *1 - losuj liczby od jeden *50 - do pięćdziesiąt *15 - wylosowanych liczb ma być 15 Efekt finalny <pre> >>45<< >>38<< >>6<< >>23<< >>16<< >>35<< >>9<< >>29<< >>15<< >>4<< >>11<< >>21<< >>50<< >>48<< >>8<<