• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Losowe liczby bez powtórzeń

Object Storage Arubacloud
+1 głos
1,848 wizyt
pytanie zadane 18 czerwca 2015 w PHP przez shadax Obywatel (1,850 p.)
Witam, mam mały problem... Jak zrobić, żeby wylosować pięć różnych cyfr/liczb w php?

2 odpowiedzi

+3 głosów
odpowiedź 18 czerwca 2015 przez Comandeer Guru (600,810 p.)
wybrane 18 czerwca 2015 przez shadax
 
Najlepsza
<?php
$numbers = []; //tu se zapiszemy liczby wylosowane
do //odpalamy pętlę
{
	$number = rand(1, 1000); //losujemy od 1 do 1000

	if(!in_array($number, $numbers)) //sprawdzamy czy nie mamy już takiej liczby w tablicy
		$numbers[] = $number; //jak nie, dodajemy ją do tablicy
}while(count($numbers) < 5); //ma się wykonywać tak długo, aż nie będziemy mieli 5 losowych liczb

var_dump($numbers);

 

komentarz 18 czerwca 2015 przez shadax Obywatel (1,850 p.)

Wielkie dzięki! laugh

komentarz 18 czerwca 2015 przez Schizohatter Nałogowiec (39,600 p.)

Ha! Tak oto nadszedł dzień, kiedy już drugi raz od 4 lat znam lepszą odpowiedź niż Comandeer:
 

$numbers = range(0, 10);
$chosenNumbers = array_rand($numbers, 5);

var_dump($chosenNumbers);

 

komentarz 18 czerwca 2015 przez Comandeer Guru (600,810 p.)
Heh, masz mnie :D faktycznie, proste i genialne. Tylko ciekawi mnie jak wydajność ;)
komentarz 18 czerwca 2015 przez Schizohatter Nałogowiec (39,600 p.)
Ale co ciekawe - wynik jest zawsze posortowany według kluczy, a co za tym idzie - w przypadku liczb ułożonych w ciąg rosnący - także liczby są posortowane.
komentarz 18 czerwca 2015 przez CzlowiekSkrypt Nałogowiec (26,340 p.)
No i ładnie, od moich 50 linijek, poprzez 10 Comandeera dotarliśmy do 3  ;)
+1 głos
odpowiedź 18 czerwca 2015 przez CzlowiekSkrypt Nałogowiec (26,340 p.)
edycja 18 czerwca 2015 przez CzlowiekSkrypt
Ja to kiedyś zrobiłem tak:
Losujesz pierwsza liczbę $liczba1=rand(1,100);
echo $liczba1;

Do drugiej liczby już dodajesz pętlę która sprawdza czy nowa liczba nie pokrywa się już z istniejącą
do{
$liczba2 = rand(1,100);
}
 while($liczba2 == $liczba1);
echo $liczba2;

Potem po prostu zwiększasz ilość warunków z każdą liczbą
do{
$liczba3 = rand(1,100);
}
 while($liczba3 == $liczba2 && $liczba3 == $liczba1);
 echo $liczba3;

Trochę dłubania jest, nie wiem czy nie ma prostszej metody :P

Podobne pytania

–1 głos
0 odpowiedzi 214 wizyt
pytanie zadane 5 września 2018 w C i C++ przez adamus Użytkownik (860 p.)
–1 głos
2 odpowiedzi 413 wizyt
pytanie zadane 28 czerwca 2018 w JavaScript przez Tomasz Ozi Orzech Początkujący (300 p.)

92,556 zapytań

141,404 odpowiedzi

319,561 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...