Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Zufallsgenerator

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Zufallsgenerator

    Moin,
    ich habe mir einen kleinen Zufallsgenerator gecodet. Ich wollte fragen was ich daran noch besser machen kann. Ist erstmal nur der prototyp, später soll natürlich alles noch vom nutzer bestimmbar sein.
    PHP-Code:
    <?

    echo'Zufallsgenerator:';

    error_reporting: -1;
    //Stellen:
    $stellen = 10;
    //Pools:
    $abc = true;
    $ABC = true;
    $num = true;
    $snz = true;
    $abcpool = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
    $ABCpool = array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
    $numpool = array(1,2,3,4,5,6,7,8,9,0);
    $snzpool = array("!", "$", "%", "&", "/", "(", ")", "=", "?", "-", "_", ".", ":", ";", ",","<", ">");       
    if($abc == true)
        if(empty($pool))
            $pool = $abcpool;
        else
            $pool = array_merge($pool, $abcpool);
    if($ABC == true)
        if(empty($pool))
            $pool = $ABC;
        else
            $pool = array_merge($pool, $ABCpool);
    if($num == true)
        if(empty($pool))
            $pool = $numpool;
        else
            $pool = array_merge($pool, $numpool);
    if($snz == true)
        if(empty($pool))
            $pool = $snzpool;
        else
            $pool = array_merge($pool, $snzpool);
    $werte = count($pool) - 1;
    for ($n=1;$n<=$stellen;$n++)
            $str = $str . $pool[mt_rand(0, $werte)];
    echo $str;

    ?>
    Vielen Dank,
    Grüße anghenfil
    Nützliches:

  • #2
    Was meinst du mit besser? Auf jeden Fall geht es kürzer Wenn später alles einzeln definierbar sein soll, würde ich den Pool aus der Funktion auslagern. Dh die Funktion bekommt ein Array und die Länge übergeben und gibt den zufälligen String daraus zurück.

    PHP-Code:
    // die Funktion
    function createRandVal($arrPool$len) {
        
    $str '';
        for (
    $n 1$n <= $len$n++) {
            
    $str $str $arrPool[mt_rand(0count($arrPool)-1)];
        }
        return 
    $str;
    }

    // Anwendung:
    $abcpool range('a''z');
    $ABCpool array_map('strtoupper'$abcpool);
    $numpool range(09);
    $snzpool = array("!""$""%""&""/""("")""=""?""-""_""."":"";"",","<"">");       

    $ALLpool array_merge($abcpool$ABCpool$numpool$snzpool);

    echo 
    'Zufallsgenerator: ' createRandVal($ALLpool10); 
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Ah vielen Dank, das macht das ganze übersichtlicher. range kannte ich noch gar nicht
      Nützliches:

      Kommentar


      • #4
        Nur mal als weitere Variante gedacht:
        PHP-Code:
        $aAllPool array_merge(
                
        range'a''z' ),
                
        range'A''Z' ),
                
        range0),
                array( 
        '!''$''%''&''/''('')''=''?''-''_''.'':'';'',','<''>' )
            );


        $sRandomString = function( $length ) use ( &$aAllPool ) {
                
        shuffle$aAllPool );
                return 
        implodearray_slice($aAllPool0$length) );
            };


        echo 
        $sRandomString10 ); 
        resultiert jetzt daraus, daß ich persönlich nicht bei jedem Aufruf das ganze Array mit allen erlaubten Zeichen mitgeben will und der Annahme, daß shuffle() ausreicht, sofern es hier nicht um Passwörter geht...

        Wenn man sich den Aufbau des Arrays noch simpler gestalten möchte, kann man einfach ein paar weitere Zeichen zulassen und kann das ganze so abkürzen
        PHP-Code:
        $aAllPool range'!''}' ); 
        , da range über die ASCII-Tabelle läuft.
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

        Kommentar

        Lädt...
        X