generování náh. čísel

ahoj .. potreboval bych prosim poradit ..
takze muj problem se toci okolo generovani nahodneho cisla: potreboval bych vytvořit něco co by vyhodilo náh. č. v určitém rozmezí a s podmínkou "ne tyto číla". Takže vlastně : Vygeneruj náhodné číslo v rozmezí 1 - 9, nesmíš vygenerovat např. 2,5,6 .. fakt nevim jak to mam napsat :-) ale budou tu urcite zkusenejsi :-) tak dekuji
http://mirrors.inway.cz/manual/cs/function.rand.php
a pak proste udelas cyklus, kde v podmince budes kontrolovat, co se ti vygenerovalo, a podle potreby budes cyklit tak douho, az se vygeneruje povolene cislo. jednoduche, ze?
while($i!=2 or $i!=5 or $i!=6) {
$i = rand(1, 9);
}

? takhle?
jojo .. aleproblém je v tom , že já to potřebuju ty nepovolený číslice dostat do jedné proměnné .. takže takhle:
$nepovolene = 256;

.. Odpovidam na Tonik:

tak jak navrhujes to jsem udělal :
function generator($nep_cisla) {
$nahodicka = nahodne_cislo(1000000);

if(ereg($nahodicka, $nep_cisla)):
return generator($nahoda, $neg_cisla);
else:
return $nahodicka;
endif;

}
ale je to holí zoufalství, když chci čísla na stránce generovat při mé potřebě 64x ..
$nepovolene=array(2,5,6);

$cislo=rand(1,10);
while (in_array($cislo,$nepovolene)) $cislo=rand(1,10);

PS: psano po pameti, ale melo by to fungovat
tak to jsem taky zkusil .. :-( ale problem je v tom, že nemůžu nijak ovlivnit proměnnou $nepovolene .. $nepovolene je prostě = 256478 .. to znamená že tyhlety čísla nemůžu narvat do pole když jsou takhle v sobe :-(
explode a array;)

$a = explode('', $cisla);
$b=array();
while($i!=count($a)) {
$b[$i] = $a[$i];
}

hmm co ted?
este tam chybi $i++

$a = explode('', $cisla);
$b=array();
while($i!=count($a)) {
$b[$i] = $a[$i];
$i++;
}
no a na co je tam to kopirovanie z a do b? :)

function rand_zakazane ($zakazane, $od, $do) {
$zakazane = explode('', $zakazane);
do {
$i = rand($od, $do);
} while (in_array($i, $zakazane));
return $i;
}

echo rand_zakazane(123, 1, 9);

snad to pojde
jojo přesně podle toho posledního si to představuju tak je to fakt dobrý :-) ale s funkcí explode nemam zkušenosti, ani manuál mi nic neřiká .. když to zkusim, napíše mi to :
Warning: Empty delimiter in c:\apache\htdocs\math\index.php on line 3

Warning: Wrong datatype for second argument in call to in_array in c:\apache\htdocs\math\index.php on line 6
což tomu nerozimim kde je chyba . :-) díkys
function rand_zakazane ($zakazane, $od, $do) {
$zakazane = ' '.(string)$zakazane;
do { $i = rand($od, $do); } while(strpos($zakazane, (string)$i));
return $i; }

moc se mi tam nelibi ten radek $zakazane = ' '.(string)$zakazane;, ale nic lepsiho jsem uz nevymyslel...
jupííííííí fachá to! dííky ti moc :-)
hm, a co to tak udělat obráceně? Teda do pole si dát čísla, která vybrat můžu a pak náhodně generovat index.
Napadá mě, co kdyby nějaký stroj používal hw generátor náhodných čísel (to existuje) a ten se mu pokazil a začal generovat pořád to samé číslo a zrovna to by se ti nelíbilo. Tak by se ti to zacyklilo a nevěděl bys proč.
Je to podle toho, kolik by se jich generovalo.
Napadla mě dvě řešení:
manuálně nastrkat čísla, která mohou být vygenerova a pak vygenerovat index od 0-count(pole)

nebo pro hodně prvků

vygenerovat pole od x do y, otočit klíče a hodnoty, vyhodit položky, které nechci, znovu otočit klíče a hodnoty, předělat klíče (třeba přes array_values() ) a zase vygenerovat náhodný klíč pole a vrátit hodnotu.
.. to je dost náročné, co?