La manière dont je vois ça rapidement, ce serait de stoker les valeurs dans un tableau indexé sauf si c'est la valeur "3" par exemple et ensuite d'utiliser shuffle pour "mélanger" les valeurs avant d'extraire la première valeur qui sera donc une valeur au hasard, sauf 3 qui n'aira pas été enregistrée dans le tableau.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse