Seite 1 von 1
[PHP] 12 Stellige, verschiedene Zufallszahlen generieren
Verfasst: 11.03.2006 22:09
von FighterBC
Hallo,
ich würde gerne 1000 12-Stellige Zufallszahlen mit PHP generieren lassen und auf einer Seite alle untereinander ausgeben.
Allerdings will ich auf keinen Fall das mehrfach die selbe Zahl erscheint. Sondern nur 1x!
Wie funktioniert das? Wäre nett wenn mir das jemand machen könnte und hier posten!
Danke schon im Vorraus!
Das generieren hab ich schon, nur ist leider nicht sicher das keine mehr als 1x vorkommt.
Code: Alles auswählen
<?
$anzahl = 1;
while($anzahl < 1001){
$stellen = 1;
while($stellen < 13){
$zufall = rand(1,9);
echo $zufall;
$stellen ++;
}
echo "<br>";
$anzahl ++;
}
?>
Verfasst: 12.03.2006 01:04
von fanrpg
Code: Alles auswählen
<?php
$i = 1;
$zufallszahlen = array();
while( $i <= 1000 )
{
$zufall1 = rand(1, 9);
$zufall2 = rand(1, 9);
$zufall3 = rand(1, 9);
$zufall4 = rand(1, 9);
$zufall5 = rand(1, 9);
$zufall6 = rand(1, 9);
$zufall7 = rand(1, 9);
$zufall8 = rand(1, 9);
$zufall9 = rand(1, 9);
$zufall10 = rand(1, 9);
$zufall11 = rand(1, 9);
$zufall12 = rand(1, 9);
$zufallszahl = $zufall1.$zufall2.$zufall3.$zufall4.$zufall5.$zufall6.$zufall7.$zufall8.$zufall9.$zufall10.$zufall11.$zufall12;
if( !in_array($zufallszahl, $zufallszahlen) )
{
$zufallszahlen[$i] = $zufallszahl;
$i++;
}
}
while( list($id, $zahl) = each($zufallszahlen) )
{
echo $id." : ".$zahl."<br />";
}
?>
So würde ich das machen..
Verfasst: 12.03.2006 11:14
von FighterBC
Ich danke dir vielmals für deine Arbeit
Nur nochmal die Rückfrage zur Sicherheit...
Ist bei deiner Möglichkeit 100% ausgeschlossen das jede Zahl nicht mehr als 1x vorkommt???
Verfasst: 12.03.2006 14:42
von fanrpg
Ja zu 99,9% anders könnts nur Fehler in PHP sein.
Verfasst: 14.03.2006 11:51
von Duckster
Tach - ihr macht da ja was.
Ich dachte ich schreibe mal schnell einen passenden Zufallszahlengenerator.
Aber merkwürdigerweise erscheinen - trotz Rahmenbedingung - auch
negierte Ergebnisse und die Zeichenlänge entspricht nicht den Vorgaben.
Guck doch mal ob du deinen Code nicht etwas in diese Richtung angleichen magst.
Code: Alles auswählen
<?php
srand((double)microtime()*12345);
/* Fehlerhafte Ergebnisse bei zu grossen ints? Scheint so.
* Lösung: 12 Stellen einzeln ermitteln.
*/
//$RandMin=100000000000;
//$RandMax=999999999999;
$RandMin=1;
$RandMax=9;
$Zufallszahl=rand($RandMin,$RandMax);
echo strlen($Zufallszahl);
echo(" => ");
echo $Zufallszahl;
?>
ps:
Guckst du
1)
http://de2.php.net/srand
2)
http://de2.php.net/rand
Viel Glück.
Tschüü.
Verfasst: 14.03.2006 12:05
von Maran
Noch nicht getestet, aber so könnte es gehen:
Code: Alles auswählen
$res = array();
while (count($res) < 1000)
{
do
{
$num = mt_rand(100000000000, 999999999999);
}
while (in_array($num, $res));
$res[] = $num;
}
var_export($res); // Ausgabe

Verfasst: 14.03.2006 12:51
von Duckster
http://de2.php.net/manual/de/language.types.integer.php
Grenze der Integers ist 31 Bit. Damit 2^31-1 = 2147483647 wäre der max. Wert.
12-stellig muss man sich entsprechend anbinden. Ist ja eigentlich kein Problem mehr, oder?
Verfasst: 14.03.2006 15:00
von Maran
Dann halt so als String-Ausgabe (ebenfalls nicht getestet):
Code: Alles auswählen
$res = array();
while (count($res) < 1000)
{
$num = '';
do
{
$i = 0;
while ($i++ < 12)
{
$num. = ($num != '') ? (string) mt_rand(0, 9): (string) mt_rand(1, 9);
}
}
while (in_array($num, $res));
$res[] = $num;
}
var_export($res); // Ausgabe
