Jede Zufallszahl nur ein mal verwenden?

multimolti

Erfahrenes Mitglied
Hallo!

Ich brauche 12 Zufallszahlen, möchte aber, das jede nur ein mal vorkommt. Die Zahl ist aus 4 anderen Zufallszahlen zusammengesetzt. Ich dachte an eine do{}-while()-Schleife, aber die scheint nicht so wirklich zu funktionieren.

Hier mein Code:
PHP:
        		do
        		{
        			$currentCard = rand(1,3).rand(1,3).rand(1,3).rand(1,3);
        		}
        		while(array_search($currentCard, $userCards) != false);
        		$userCards[] = $currentCard;
Die Zufallszahlen kommen trotzdem manchmal doppelt vor!
 
Zuletzt bearbeitet:
Ich würde das Array $usercards mit array_shuffle durcheinanderwühlen und dann welche daraus ausgeben. Bei deiner Methode müsstest du die Karte nach jedem Ziehen natürlich aus dem Deck entfernen, per unset()
 
Hallo,

ich würde es entweder so machen wie Michael vorgeschlagen hat oder du könntest dir die benutzten Zahlen abspeichern und bei der nächsten Zahl überprüfst du einfach ob diese schon mal vorkam.

MFG

zEriX
 
Such dir eine Variante aus:
PHP:
$userCards = array();
for( $i=0; $i<12; ) {
	$currentCard = rand(1,3).rand(1,3).rand(1,3).rand(1,3);
	if( !in_array($currentCard, $userCards) ) {
		$userCards[] = $currentCard;
		$i++;
	}
}
var_dump($userCards);

$userCards = array();
for( $i=1; $i<4; $i++ ) {
	for( $j=1; $j<4; $j++ ) {
		for( $k=1; $k<4; $k++ ) {
			for( $l=1; $l<4; $l++ ) {
				$userCards[] = $i.$j.$k.$l;
			}
		}
	}
}
shuffle($userCards);
var_dump(array_slice($userCards, 0, 12));
 
Zurück