Seite 1 von 1

RandomAscii - Durchwürfelt einen kleinen Text...

Verfasst: Dienstag 3. August 2004, 14:05
von genrich
Ich brauchte eine Möglichkeit einen String durcheinander zu würfeln.
Das ganze sollte reproduzierbar Zufällig sein :) Also mit einem gleichen SeedWort kommt das selbe herraus.

Meine Idee ist es nun zwei Zufällige Positionen zu bestimmen (Pos1 und Pos2) und die zeichen an dieser Stelle zu tauschen.
leider hatte ich kenne ich keine Möglichkeit, das elegant zu machen. Es ist zwar ein leichtes ein Zeichen an einer bestimmten Stelle zu erhalten (Zeichen1=RndAscii[Pos1]) aber ich weiß nicht, wie man an beine bestimmten Stelle ein anderes Zeichen einfügen kann, außer die Geschichte mit "RndAscii=RndAscii[:Pos1]+Zeichen2+RndAscii[Pos1+1:]"

Code: Alles auswählen

from random import Random
def RandomAscii(RndAscii, SeedWort):
    seed=0
    for a in SeedWort: seed+=ord(a)
    rnd = Random(seed)

    max=len(RndAscii)-1
    for i in range(50):
        Pos1=rnd.randint(1,max)
        Zeichen1=RndAscii[Pos1]

        Pos2=rnd.randint(1,max)
        Zeichen2=RndAscii[Pos2]

        RndAscii=RndAscii[:Pos1]+Zeichen2+RndAscii[Pos1+1:]
        RndAscii=RndAscii[:Pos2]+Zeichen1+RndAscii[Pos2+1:]
    return RndAscii

SourceText="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
print RandomAscii(SourceText,"1234")
Als Ergebnis erhält man

Code: Alles auswählen

0AbmW56cwMJI4guzBTiC8LaNxDQqSnUyZ3Ov12rd9fVhXjkeHYopRGtsK7EPlF

Verfasst: Dienstag 3. August 2004, 14:32
von mawe
Hi!

Geht das nicht mit shuffle einfacher?

Code: Alles auswählen

from random import Random

rnd = Random("1234")
l = list("1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ")
rnd.shuffle(l)
print "".join(l)
Gruß, mawe

Verfasst: Dienstag 3. August 2004, 14:43
von genrich
Ach mißt... Das kannte ich nocht nicht :( Hätte ich das mal vorher gewusst :evil:

Verfasst: Montag 9. Januar 2006, 01:47
von fu86
Ich hab mir erlaubt, die beiden Beiträge in das neue Wiki zu übernehmen. Falls das nicht im Interesse der Autoren ist, bitte löschen oder umändern oder aber erweitern :)

http://pythonwiki.pocoo.org/String_repr ... ar_mischen

Verfasst: Montag 9. Januar 2006, 07:36
von jens
Schön das du es in's Forum geschafft hast! Ist eine gute Idee das in's Wiki zu packen, müßten wir eigentlich viel öfters machen. Im Forum stecken so manche Wissensschätze...

Ich hab im Wiki noch erwähnt, das der seed wichtig ist :)