Linear feedback shift register?

In letzter Zeit stieß ich immer wieder in das Konzept des LFSR, das finde ich ganz interessant wegen Ihrer verbindungen mit den verschiedenen Bereichen und auch faszinierendes an sich. Es hat mich einige Mühe zu verstehen, die Letzte Hilfe war das wirklich gut Seite, viel besser als der (zunächst) kryptisch wikipedia-Eintrag. So wollte ich schreiben, einige kleine code für ein Programm, das funktioniert wie ein LFSR. Um genauer zu sein, der irgendwie zeigte, wie ein LFSR funktioniert. Hier ist die sauberste Sache, die ich tun konnte, nach einigen lenghtier versuche (Python):

def lfsr(seed, taps):
    sr, xor = seed, 0
    while 1:
        for t in taps:
            xor += int(sr[t-1])
        if xor%2 == 0.0:
            xor = 0
        else:
            xor = 1
        print xor
        sr, xor = str(xor) + sr[:-1], 0
        print sr
        if sr == seed:
            break

lfsr('11001001', (8,7,6,1))      #example

Ich den Namen "xor" der Ausgang der XOR-Funktion nicht ganz richtig.
Dies ist jedoch nur gemeint, um zu zeigen, wie er seine Kreise über seine mögliche Zustände, in der Tat bemerkte Sie das register wird repräsentiert durch einen string. Nicht viel logischer Kohärenz.

Kann dies leicht verwandelte sich in ein schönes Spielzeug-man kann stundenlang zusehen (zumindest konnte ich 🙂

def lfsr(seed, taps):
    import time
    sr, xor = seed, 0
    while 1:
        for t in taps:
            xor += int(sr[t-1])
        if xor%2 == 0.0:
            xor = 0
        else:
            xor = 1
        print xor
        print
        time.sleep(0.75)
        sr, xor = str(xor) + sr[:-1], 0
        print sr
        print
        time.sleep(0.75)

Dann traf es mich, welchen nutzen hat das in software schreiben? Ich habe gehört, es kann generieren von Zufallszahlen; ist es wahr? wie?
Also, es wäre schön, wenn jemand könnte:

  • erklären, wie man solch ein Gerät in der software-Entwicklung
  • kommen mit einigen code, um den Punkt oben oder wie ich zu zeigen verschiedene Möglichkeiten, es zu tun, in jeder Sprache

Auch, wie theres nicht viel, didaktische Zeug um über dieses Stück Logik und digitalen schaltungen, es wäre schön, wenn dies ein Ort sein könnte für noobies (so wie ich), um ein besseres Verständnis dieser Sache, oder besser, zu verstehen, was es ist und wie nützlich es sein kann, wenn das schreiben von software. Sollte es sich um eine community-wiki?

Sagte, dass, wenn jemand fühlt sich an wie Golfen... du bist willkommen.

  • Wenn Sie die Suche nach lfsr SO finden Sie eine Menge ...
  • Ich habe, nicht so viel, was ich wollte
  • Warum ist das tagged as code-golf?
  • da würde ich (auch) gerne sehen, es Golf gespielt. wenn das nicht genug für den tag, tut mir Leid.
  • in nur 2 Tagen habe ich verwendet LFSR zum transformieren eines ganzzahligen Sequenz, um eine semi-random ein und konvertieren Sie es dann zurück: stackoverflow.com/questions/9804100/...
InformationsquelleAutor MattiaG | 2010-09-17
Schreibe einen Kommentar