obara
15.12.2003, 16:55:02
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.
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." ";
}
?>[/php:1:77059632e4]
BzikOS
15.12.2003, 17:02:54
ekhm. a nie wystarczy samo
array_rand()?
Jako drugi parametr można podać ilość elementów do wylosowania.
Cytat
ekhm. a nie wystarczy samo
array_rand()?[...]
Niewiedziałem :oops:
obara
15.12.2003, 17:21:48
: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.