Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: losowanie z puli bez powtorzen
Forum PHP.pl > Forum > PHP
obara
Czy znajduje sie gdzies juz moze odpowiedz na pytanie:
W jaki sposob wylosowac z zamknietego zbioru kilka elementow tak aby zaden sie nie powtarzal?

Czy ktos zna odpowiedz nielopatologiczna?
Chodzi mi o to aby nie robic petli tak dlugo losujacej, az wezmie rozne rekordy. Rozwiazanie moze byc sql'owe poniewaz rekordy pobierane beda z bazy.
dob
Kod pochodzi z manualowych komentarzy do funkcji rand
[php:1:77059632e4]<?php
// set some globals
$s = array();
$n = 5; // the range you require (this will give 1-12)

function set_num() {
global $s, $n;
$add = "yes";
$ran = rand(1, $n);
if(count($s) > 0) {
foreach($s as $sh) {
if($ran == $sh) {
$add = "no";
}
}
}
if($add == "yes") {
$s[] = $ran;
} else {
set_num();
}
}

// call the function as needed
while(count($s) < $n) {
set_num();
}
// just output a list seperated by whitespace
foreach($s as $sh) {
echo $sh."&nbsp;";
}
?>[/php:1:77059632e4]
BzikOS
ekhm. a nie wystarczy samo array_rand()?
Jako drugi parametr można podać ilość elementów do wylosowania.
dob
Cytat
ekhm. a nie wystarczy samo array_rand()?[...]


Niewiedziałem :oops:
obara
:oops: jakis stary manual chyba mam...

dzieki wielkie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.