2 Stimmen

Wie kann ich einen Algorithmus zur Erzeugung zufälliger Zeichenfolgen erstellen?

Ich möchte zufällige Zeichenfolgen generieren wie:

sssder
tvmwww
66rfdd
123123
oo007oo
1234
2020
1111
rrrr
r8r8r
uiuiu
wewewe
fefefe
abced
xyz..

Konkret möchte ich eine Zeichenkette mit einer Länge von 5 bis 8 Zeichen, die ist leicht zu merken . Ist dies möglich?

0 Stimmen

@Tyler: Ja, das ist der Grund, warum ich fragte, ist dies möglich.. hehh, und viele andere f***s versuchen, down vote ich weiß nicht, warum diese Leute haben eine solche schamlose Aktivität :). wie auch immer danke für Ihre Antwort :)

2 Stimmen

Der Grund, warum Ihre Frage abgelehnt wurde, ist, dass sie nicht klar definiert ist. Das ist so, als hätten Sie gepostet: "Wie programmiere ich einen Computer so, dass er schöne Bilder erzeugt?

0 Stimmen

Ich glaube, dass er versucht, Zeichenketten zu erhalten, die leichter zu buchstabieren sind, z. B. "mabokufi" ist (zumindest für mich) leichter zu merken als "lxkrpuol". Leichter zu buchstabieren = leichter zu merken.

5voto

moonshadow Punkte 81155

Hier ist die Quelle für ein ziemlich kompliziertes Skript, das eine BNF-ähnliche Definition einer Zeichenkette und erzeugt eine passende Zeichenkette durch zufällige Auswahl von Möglichkeiten. Diese Seiten enthalten einige Beispieldefinitionen. Vielleicht sind diese von Nutzen.

5voto

Alix Axel Punkte 146320

Was Sie suchen, ist ein Generator für mnemonische Zeichenfolgen, hier ist die Funktion:

function Mnemonic($letters = 6)
{
    $result = null;
    $charset = array
    (
        0 => array('b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z'),
        1 => array('a', 'e', 'i', 'o', 'u'),
    );

    for ($i = 0; $i < $letters; $i++)
    {
        $result .= $charset[$i % 2][array_rand($charset[$i % 2])];
    }

    return $result;
}

Aktualisiert, um Ziffern am Ende der Zeichenkette zuzulassen:

function Mnemonic($letters = 6, $digits = 2)
{
    $result = null;
    $charset = array
    (
        0 => array('b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z'),
        1 => array('a', 'e', 'i', 'o', 'u'),
    );

    for ($i = 0; $i < $letters; $i++)
    {
        $result .= $charset[$i % 2][array_rand($charset[$i % 2])];
    }

    for ($i = 0; $i < $digits; $i++)
    {
        $result .= mt_rand(0, 9);
    }

    return $result;
}

3voto

St. John Johnson Punkte 6390

Véase diese Stelle für eine kurze PHP-Funktion zur Generierung einer zufälligen, verwendbaren Tastaturzeichenfolge einer bestimmten Länge (da dies wie ein Passwortgenerator aussieht). Hier ist die Funktion aus diesem Beitrag kopiert.

function rand_char($length) {
  $random = '';
  for ($i = 0; $i < $length; $i++) {
    $random .= chr(mt_rand(33, 126));
  }
  return $random;
}

0 Stimmen

Genau das wollte ich posten.

2voto

Williham Totland Punkte 27585

Das hängt davon ab, was Sie von den Saiten erwarten. Von den Beispielen, die Sie zur Verfügung gestellt haben, scheint es, als ob Sie eine zweistufige Sache wollen; z.B. eine Funktion, die eine dreistellige zufällige Zeichenkette generiert und dann jedes Zeichen verdoppelt; oder die Zeichenkette wiederholt; oder das erste Zeichen dreimal, das zweite zweimal und das dritte nur einmal wiederholt.

Grundsätzlich möchten Sie wahrscheinlich einen "Pool" erstellen, z.B. eine geeignete kurze Zeichenkette, die mit einer zufällig ausgewählten Methode generiert wird (alle Zahlen, fortlaufende Zahlen mit zufälligem Start, fortlaufende Buchstaben, zufällig ausgewählte Wortteile aus einem Wörterbuch...) und dann eine Funktion, die die Zeichenkette nach einem bestimmten Prinzip aufbläst.

2voto

Disco Punkte 515

Versuchen Sie dies: Alphanumerischer Zufallsstring-Generator-Skript in PHP

http://www.i-fubar.com/random-string-generator.php

1 Stimmen

Das ist ein ziemlich hässliches und ineffizientes Stück Code, ich wette, ich könnte genau das gleiche Ergebnis in 5 Zeilen oder weniger archivieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X