|
|
Zufallsgenerator hardware- oder programmierabhängig? |
Abtreter
Schwaflibus everytimus sinnlosicus
Dabei seit: 06.07.2005
|
|
Zufallsgenerator hardware- oder programmierabhängig? |
|
Moins...
Mir ist aufgefallen, dass die Prommiersprache BASIC auf dem damaligen C64-Äquivalent KC85 zwar eine Art Zufallsgenerator zuließ, jedoch immer wieder gleiche Zahlenfolgen aufgreift.
Möglicherweise kam bei einer Zufallsgeneration zwischen 1 und 6 (simples selbstgeschriebenes Würfelspiel von vor knapp 20 Jahren) zuerst die 3, dann war z. B. immer klar, dass 1, 6, 4 usw. folgen.
Die Befehlszeilen sollte damals in etwa so gelautet haben:
FOR I=1 TO 6 (danach kam noch irgendwas mit NEXT)
PRINT I
Nun ist mir das gleiche Problem auch an meinem ordnerfähigen mp3-Radio aufgefallen. Springt nach Betätigen der "Mix"-Taste der Zufallsgenerator an und schaltet zum nächsten Lied, weiß ich mittlerweile schon oft, was danach kommt. Das Radio ist ein Blaupunkt MP 54.
Macht man das ganze Spielchen mit Winamp, habe ich noch keine vorauszuahnende Titelliste gehabt.
Was ist das für eine Zufallsgenerator, der immer wieder die gleichen Folgen zusammenstellt? Kennt jemand eine Formel oder sowas in der Art, die genau diese Wiederholungen hervorrufen kann, obwohl es eigentlich zufällig sein sollte?
Ist nicht wirklich elementar wichtig für mich, aber irgendwie interessierts mich schon, was das soll...
Danke im Voraus
Treter
__________________ Schlussklausel vor der Werbung:
Forenbedingte Pseudoschlammschlachten trage ich nur per PN unter Berücksichtigung des Beibehaltens aller zur sinnvollen Klärung des Sachverhaltes notwendigen Sachlichkeit aus.
|
|
31.05.2006 13:31 |
|
|
|
Na, welch Anlass für mich zum Spammen - ich hab nämlich keinen Schimmer von den Formeln, die du da ansprichst...
Allerdings besitze ich so ein ähnliches Gerät. Es handelt sich um einen tragbaren CD-Player von eher geringem Wert. Der besitzt eine Random-Funktion, die nicht wirklich eine ist
Nach einer vorbestimmten Abfolge springt der nämlich durch die Ordner. Wenn man von einem bestimmten Lied aus startet, landet man danach immer bei der gleichen nächsten mp3. Die liegt ein paar Unterordner weiter. Die "Abstände" zwischen den "zufällig" gewählten mp3 sind auch unterschiedlich. Man arbeitet eine Schleife ab, die irgendwann jedes Lied einmal gespielt haben wird und dann wieder von vorne anfängt, hab ich den Eindruck. Diese Funktion simuliert also einen zufälligen Sprung - der einen aber eben nur beim ersten Mal tatsächlich überrascht
Aber ich bin sowieso eher ein Alben-Hörer. Deshalb hat mich diese Erkenntnis nach dem Kauf des Gerätes kurz verwundert, habe sie dann aber ziemlich bald gedanklich ad acta gelegt.
__________________
People are more violently opposed to fur than leather because it's safer to harass rich women than motorcycle gangs.
The single biggest problem with communication is the illusion that it has taken place. - George Bernard Shaw
My opinions may have changed, but not the fact that I am right. - Ashleigh Brilliant
Just remember: if the world didn't suck, we'd all fall off.
|
|
31.05.2006 13:48 |
|
|
|
Ein Zufallsgenerator berechnet ausgehend von einem Startwert eine Folge von Zahlen. Bei gleichem Startwert folgt immer die gleiche Folge. Enscheidend ist also, mit welchem Wert initialisiert wird. Bei Rechnern nimmt man zB die Systemzeit. Je einfacher das Gerät, desto eingeschränkter sind natürlich die Möglichkeiten der Initialisierung.
|
|
31.05.2006 13:53 |
|
|
F-4
Groß-Pontifex
Dabei seit: 03.07.2005
|
|
Ich nehme mal an, dass ein Zufallsgenerator eine mathematische Funktion verwendet, um Zahlenreihen zu generieren. Um eine scheinbare Zufälligkeit herzustellen, dient als Parameter solch einer Funktion oftmals eine Variable wie beispielsweise die aktuelle Uhrzeit.
|
|
31.05.2006 13:53 |
|
|
Abtreter
Schwaflibus everytimus sinnlosicus
Dabei seit: 06.07.2005
Themenstarter
|
|
Danke erst mal (auch VN für den Spam
) für Eure Antworten!
Ich muss mich bezüglich des Computers noch berichtigen. Basic hab ich ansatzweise erlernt zwar am KC85, aber umgesetzt auch später noch am Amiga 500, wo dann dieser Wiederholungseffekt auftrat.
Treter
__________________ Schlussklausel vor der Werbung:
Forenbedingte Pseudoschlammschlachten trage ich nur per PN unter Berücksichtigung des Beibehaltens aller zur sinnvollen Klärung des Sachverhaltes notwendigen Sachlichkeit aus.
|
|
31.05.2006 14:21 |
|
|
NineBerry
Inquisitor-Meister
Dabei seit: 28.02.2005
|
|
Wie Riverz schon gesagt hat, gibt es einmalig einen Startwert. Dieser dient als erster Wert (Seed) einer Zahlenreihe.
R[0] -> R[1] -> R[2] -> R[3]
Jedes R[i] wird dabei nach einer festen Formel nur abhängig vom Wert R[i-1] berechnet.
Der Wertebereich für die Rs ist normalerweise ziemlich groß. Also z.B. Werte zwischen 0 und etwas über 4 Milliarden.
Der eigentliche Zufallswert entsteht durch Modulo-Operation auf R[i]. Also z.B. R[i] modulo 12, falls es 12 Tracks (0-11) gibt.
Ein Hardware-mp3-Player hat keine einfache Möglichkeit, sich einen oft genug wechselnden Wert als Seed zu besorgen. Deswegen wird dort normalerweise ein fester Seed verwendet, was dann bei gleicher Anzahl von Tracks zur gleichen Reihenfolge führt.
Einige mp3-Player umgehen dieses Problem, indem Sie beim Herunterfahren das aktuelle R[i] speichern und beim nächsten Starten als neuen Seed verwenden. Offensichtlich aus Performance-Gründen geschieht dies leider nur beim Herunterfahren, nicht jedes Mal, wenn ein neues R[i] bestimmt (also ein neuer Track aufgerufen) wurde.
Der zu beobachtende Effekt ist dann folgender: Fährt man das Gerät normal herunter und startet es dann wieder, hat man eine neue zufällige Reihenfolge. Schaltet sich das Gerät irregulär aus (z.B. wegen leerer Batterie) hat man beim nächsten Starten wieder die selbe Reihenfolge der Musikstücke wie beim letzten Mal.
Der aktuelle Seed wird übelicherweise in einer versteckten Datei auf dem Datenträger selbst gespeichert. Wird dieser beim Aufspielen neuer mp3s gelöscht, fängt man natürlich wieder mit dem festen Standard-Seed an.
Zum Basic:
Üblicherweise verwenden alle Programmiersprachen bzw. Zufallsbibliotheken standardmäßig auch einen festen Startwert (Seed), um bei Anwendungen, wo es eben nicht um Zufälligkeit geht, Berechnungen wiederholen zu können.
Es gibt dann separate Funktionen, um den aktuellen Seed abzufragen, gezielt zu setzen oder eben anhand der Systemzeit setzen zu lassen.
Letzterer Befehl heißt bei Basic "Randomize" und sollte bei Anwendungen, die einen (fast) echten Zufall wollen, demnach einmal bei Programmstart aufgerufen werden. Diesen Aufruf zu vergessen, ist ein häufiger Nicht-Nur-Anfänger-Fehler
Ein anderer häufiger Fehler ist es, Randomize zu häufig aufzurufen
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von NineBerry: 31.05.2006 14:49.
|
|
31.05.2006 14:40 |
|
|
|
|
|
Impressum
|