Der Titel fasst es zusammen. Ich bin interessiert zu wissen, ob es einen Algorithmus gibt, der bei identischer Eingabe eine variable Ausgabe erzeugen kann, ohne sich auf andere Zufallsquellen wie DateTime.Now oder eine von einem Lichtsensor usw. erzeugte Zahl zu verlassen. Außerdem kann der Algorithmus nicht ausgeführt werden nacheinander nur zwei unterschiedliche, nicht verwandte Läufe, die unterschiedliche Ausgaben erzeugen.
10
2.0 + 2.0
auf einem solchen System würde nicht zu identischen Ergebnissen führen. Es braucht keine andere Quelle der Zufälligkeit.Antworten:
Nein, das ist grundsätzlich unmöglich, da die Definition eines Algorithmus darin besteht, dass er gut definiert und deterministisch ist, dh bei gleicher Eingabe immer dieselbe Ausgabe erzeugt. Es gibt randomisierte Algorithmen, die jedoch Zufälligkeit als Eingabe erfordern.
Darüber hinaus ist Determinismus das wichtigste Entwurfsziel von Computerhardware. Eine CPU, die bei gleichem Eingang nicht den gleichen Ausgang erzeugt, wäre für die meisten Zwecke völlig nutzlos.
quelle
Nein, ein Algorithmus zur Erzeugung von Pseudozufallszahlen erzeugt bei gleichem Startwert immer dieselbe Ausgabe (daher Pseudozufallszahlen ).
Ich finde es interessant, dass Sie den Begriff "Algorithmus" anstelle von "Programm" verwendet haben. Dies schließt eine bestimmte Klasse von Ja-Antworten aus (weiche Fehler im RAM, unterschiedliche Thread-Interleavings in einem Multithread-RNG usw.). Wenn Sie davon ausgehen, dass jeder Lauf Ihres Algorithmus bei jeder Iteration dieselbe Eingabe ohne Zufälligkeit enthält, wird bei jedem Lauf dieselbe Ausgabe generiert.
Davon abgesehen sind selbst grundlegende Dinge wie die CPU-Temperatur unvorhersehbar genug, um als Entropiequelle zu fungieren, wenn sie angemessen normalisiert werden. Denken Sie also nicht, dass dies impliziert, dass ein "kryptografisch sicherer" Zufallszahlengenerator vorhergesagt werden kann, wenn Sie wissen, wann er ausgeführt wurde. Viele von ihnen verwenden systemgenerierte Entropie-Feeds.
quelle
Wussten Sie, dass die Leute sehr hart arbeiten, um sicherzustellen, dass bei gleichem Startwert jedes Mal dieselbe Folge von Zufallszahlen erzeugt wird? Dies ist eine wünschenswerte Eigenschaft für Dinge wie die Monte-Carlo-Simulation, da dies bedeutet, dass die Ergebnisse vollständig reproduzierbar sind. Wenn Sie den Startwert nicht angeben, wird so etwas wie die Zeit verwendet, aber diese genaue Reproduzierbarkeit ist wirklich erwünscht.
Die einzigen RNGs, bei denen dies wirklich unerwünscht ist, sind diejenigen, die für die Kryptographie verwendet werden, und diejenigen, die dies normalerweise erreichen, indem sie die eigene Zufallszahlenquelle des Betriebssystems verwenden (die unter normalen Umständen nicht zurückgespult werden kann und möglicherweise ausgefallene Hardware verwendet), um ihren Startwert bereitzustellen.
quelle
Ich nehme an, wenn Sie den Algorithmus auf verschiedenen Hardwareplattformen implementiert haben und Techniken wie das Entnehmen der mittleren N Bits aus einer Ganzzahl verwendet haben, könnten Sie möglicherweise unterschiedliche Antworten erhalten, wenn die Ganzzahlcodierung unterschiedlich wäre (Big / Little / Mid-Endian). Es kann auch vorkommen, dass auf Computern mit FPUs Probleme auftreten, die auf Computern mit FPUs nicht auftreten, wenn Sie Gleitkommazahlen bearbeiten. Wahrscheinlich kein Problem auf Computern der Desktop-Klasse, könnte aber ein Problem auf Telefonen sein.
quelle