Frage

Ich kam auf einen Artikel über Auto ferngesteuertes Eingabesystem unter http: //auto.howstuffworks. com / remote-entry2.htm In der dritten Kugel, Autor sagt:

  

Sowohl der Sender als auch der Empfänger verwenden den gleichen Pseudo-Zufallszahlengenerator. Wenn der Sender, der einen 40-Bit-Code sendet, verwendet es den Pseudozufallszahlengenerator einen neuen Code zu wählen, die in Speicher speichert es. Am anderen Ende, wenn der Empfänger einen gültigen Code empfängt, verwendet er den gleichen Pseudo-Zufallszahlengenerator, einen neuen zu holen. Auf diese Weise sind der Sender und der Empfänger synchronisiert. Der Empfänger öffnet die Tür nur, wenn er den Code erhält es erwartet.

Ist es möglich, zwei PRNG Funktionen haben gleiche Zufallszahlen bei gleichzeitig produzieren?

War es hilfreich?

Lösung

In PRNG Funktionen, die Ausgabe der Funktion abhängig von einem ‚Saat‘ Wert, so dass die gleiche Leistung wird von aufeinanderfolgenden Aufrufen des gleichen Startwert angegeben bereitgestellt werden. Also, ja.

Ein Beispiel (C #) wäre so etwas wie:

// Provide the same seed value for both generators:
System.Random r1 = new System.Random(1);
System.Random r2 = new System.Random(1);

// Will output 'True'
Console.WriteLine(r1.Next() == r2.Next());

Das ist alles natürlich auf dem Zufallszahlengenerator abhängig irgendeine Art von deterministischer Formel ihrer Werte zu erzeugen. Wenn Sie einen so genannten ‚echten Zufall‘ Zahlengenerator verwenden, die Eigenschaften der Entropie oder Rauschens in seiner Generation verwendet, dann wäre es sehr schwierig sein, die gleichen Werte eine Eingabe gegeben zu produzieren, wenn Sie den entropischen Zustand zu duplizieren sind in der Lage für beide Anrufe in die Funktion - was natürlich den Zweck der Verwendung eines solchen Generators besiegen würde ...

Im Fall von Remote Keyless-Entry-Systemen, die sie verwenden sehr wahrscheinlich eine PRNG-Funktion, um deterministisch ist diese Funktion nutzen zu nehmen. Es gibt viele ICs, die diese Art von Funktionalität Zufallszahl für elektronische Schaltungen zu erzeugen.

Edit: auf Anfrage, hier ist ein Beispiel für einen nicht-deterministischen Zufallszahlengenerator, der auf einem bestimmten Startwert beruht nicht: Quantum Random Number Generator . Natürlich, wie freier Speicherplatz in den Kommentaren weist darauf hin, dies ist kein Pseudo-Zufallszahlengenerator, da es echte Zufallszahl erzeugt.

Andere Tipps

Die meisten PRNGs haben einen internen Zustand in Form eines Samen , die sie verwenden, um ihre nächste Werte zu generieren. Die interne Logik geht in etwa so:

nextNumber = function(seed);
seed = nextNumber;

Also jedes Mal, wenn Sie eine neue Nummer zu erzeugen, wird der Samen aktualisiert. Wenn Sie zwei PRNGs geben, dass der gleiche Algorithmus die gleiche Saatgut verwenden, function(seed) wird auf die gleiche Anzahl (vorausgesetzt, dass sie deterministisch sind, die meisten sind) zu bewerten.

auf Ihre Frage Angewandt direkt: der Sender nimmt einen Code, und verwendet sie als Keim. Der Empfänger, nachdem es empfangen worden, wird in diese seinen Generator impfen. Nun werden die beiden ausgerichtet sind, und sie werden die gleichen Werte erzeugen.

Wie Erik und Claudiu gesagt haben, ad lange, wie Sie Ihre PRNG mit dem gleichen Wert Samen werden Sie mit dem gleichen Ausgang enden.

Ein Beispiel sehen, wenn AES (oder einen anderen Verschlüsselungsalgorithmus) als Grundlage für Ihre PRNG verwenden. Solange Sie einen Eingang halten verwenden, die sowohl auf Gerät (Sender und Empfänger) passen dann die Ausgänge auch entsprechen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top