Wie funktioniert Randomize

Moin moin,
Ich überlege seit Tagen / wochen wie eine „Randomize funktion“ funktionieren kann. Wie kann eine Maschine etwas „zufällig“ machen?
ich dachte anfangs das es anhand von zeit oder System ressourcen gesteuert wird. allerdings bekomme ich ja mit ein und dem gleichem System immer eine andere zahl. Kann man in wenigen worten sagen wie ein Programm etwas zufällig eintscheiden kann ? Also es geht nach links oder recht : Welche richtung nimmt du, Ist ja das gleiche wie Random 1-2.

mfg jonny

Ich überlege seit Tagen / wochen wie eine „Randomize funktion“
funktionieren kann. Wie kann eine Maschine etwas „zufällig“
machen?

Hallo Jonny,

dadran knobeln programmiersprachenunabhängig auch schon sehr fitte Leute.
da kann ich nicht mithalten.

Ich sage dir mal wie ich mir das denke, ohne Anspruch auf Wahrheit.

Man kann schone eine Pseudozufallszahl erzeugen wenn man die Systemzeit nimmt, die Anzahl aller dateien oder deren Größen addiert, dies dann durchschüttelt und eine Pseudozufallszahl daraus erzeugt.

Das Problem ist nur, wenn du aufgrund dieser pseudozufallszahlen Bildpunkte einzeln farbig machst, erkennst du nach einiger Zeit ein Muster.

Das heißt, es sind keine echten Zufallszahlen.

Für Normalsterbliche reicht aber randomize aus.
Was anders ist es aber wenn du irgendeinen Geheimgeheimgeheimcode verschlüsseln willst und dazu eine echte Zufallszahl brauchst.

Naja, vielleicht wissen hier Andere mehr als mein spärliches Wissen darüber.

Gruß
Reinhard

Hallo,

Ich überlege seit Tagen / wochen wie eine „Randomize funktion“
funktionieren kann. Wie kann eine Maschine etwas „zufällig“
machen?
ich dachte anfangs das es anhand von zeit oder System
ressourcen gesteuert wird. allerdings bekomme ich ja mit ein
und dem gleichem System immer eine andere zahl. Kann man in
wenigen worten sagen wie ein Programm etwas zufällig
eintscheiden kann ? Also es geht nach links oder recht :
Welche richtung nimmt du, Ist ja das gleiche wie Random 1-2.

Random ist genau genommen kein Zufall.

Anhand einer Rechenroutine/Formel wird bei jedem Aufruf der Funktion ein Counter hoch gezählt und ein Wert >= 0 und kleiner 1 errechnet.

Die Verteilung der Ergebnisse kommt einer zufälligen Verteilung sehr nahe.

Weil das nicht wirklich Zufall ist, kannst Du den Counter auf eine beliebige Startposition setzen und von da aus immer die selbe ‚zufällige‘ :smile: Zahlenfolge ermitteln.

Deshalb musst Du die Randomfunktion auch mit ‚randomize Timer‘ initialisieren, wenn Du nicht immer die selbe Zahlenfolge als Ergebnis haben möchtest.

Wie die Funktion in VB exakt aussieht weiß ich nicht, für einen programmierbaren Taschenrechner (TI ‚SR56‘) hatte ich eine solche Funktion mal als Quellcode. Leider ist das 30 Jahre her, das Programm wird wohl kaum noch zu finden sein, sonst könnte ich das in VB umsetzen, das könnte man dann mir Rnd() vergleichen. :smile:

Gruß Rainer

Hallo,

das bisher gesagte ist absolut richtig. Es gibt eine Reihe von ansätzen, um echte Zufallszahlen zu errechnen.

siehe hier:

http://de.wikipedia.org/wiki/Zufallszahl

und hier:

http://de.wikipedia.org/wiki//dev/random.

Bei geringeren Ansprüchen könnte man natürlich die Zeit, Raumtemperatur, Geräuschpegel usw. nutzen, um dann aus der „Zufallszahl“ eine zufälligere „Zufallszahl“ zu errechnen.

Hier gibt es durchaus lustige Ansätze (Lavalampe). Hier noch eine Seite mit für dich vielleicht interesanten Beiträgen:

http://powerforen.de/forum/showthread.php?p=2218759

Es lebe das Chaos (Zufall?),

tf

Hallo Joe,

gesagt wurde schon viel :smile:
Nur eines noch. Um eine Zufallszahl am PC zu bekommen, wird eine Formel verwendet mit dieser die ausgerechnet wird. Mit dem Resultat vom ersten wird glaube als Start für die zweite genommen etc.
Irgendwo hier habe ich glaube noch die Formel rumliegen.
Aber bei der Erstellung der ersten Zahl, wird ein wenig getrickst … Dazu wird das rauschen von einem elektr. Betriebsmittel genutzt. Ich daechte das es der vom Wiederstand ist :wink:

MfG Alex

PS: Die Formel lautet: z = (a*z + c) mod m
wobei Z die Zufallszahl vom vorgänger war.

über a,c und m lässt sich streiten :s

Das ANSI Komitee schlägt folgende Werte vor
a = 1103515245
c = 12345
m = 2^32

Donald E.Knuth schlaegt folgende Werte vor
a = 1664525
b = 1013904223
m = 2^32

In der Literatur wird ein minimum Standard definiert,welche folgende Werte aufweisen…
a = 7^5
c = 0
m = 2^31-1

Diese stammten von Lewis, Goodman und Miller (1969). Dieser Generator besteht alle statistischen Tests, er ist hervorragend! Allerdings gibt es hierbei 2 Probleme.
1: Der Zufallsgenerator darf nie mit z=0 initialisiert werden.
2: Die Handhabung des Überlaufs bei der Berechnung von a*z ist nicht ganz unproblematisch.

Das erste Problem kann man schnell lösen. Beim zweiten, wird es schon schwieriger. ABER…

allerdings gibt es in der Literatur eine Lösung nach Schrage. Speziell für den „minimum standard“ kann man das Überlauf-Problem umgehen und (a*z mod m) berechnen, indem du zunächst

a*(z mod 127773)-2836*trunc(z/127773)

berechnest. Ist dies größer gleich Null, bist du fertig, andernfalls addierst du m dazu und bist dann fertig!

So und nun hast du die Qual der Wahl :wink:

Danke, Reinhard, Rainer, Thomas & Alex

Bis zu der Antwort von Alex wurde ich bestätig das Random immer eine andere Zahl ausspuckt es aber trotzdem kein zufall sein kann.
Nun ist noch die Frage was ist zufall? Ich könnte mir gut vorstellen das ein Computer mit Camera der einen Würfel in der luft erfassen könnte auch anhand der Dreh und fallgeschwindichkeit, und erkennung des untergrundes die Augenzahl schon vorher preisgeben könnte die am ende oben liegt. Aber das geht wohl zu weit.

Ich versuche mich gerade an Mikrocontroller Programmierung in Verbindung mit einem RC Auto…wenn er gerade auf die Wand zufährt link oder rechts ? aber es wird wohl auf Random 1-2 rauslaufen.

Alex ? Erinnerst du dich noch an das Servergesteuerte Synch programm ?
Bittttööööö
mfg jonny

Bis zu der Antwort von Alex wurde ich bestätig das Random
immer eine andere Zahl ausspuckt es aber trotzdem kein zufall
sein kann.
Nun ist noch die Frage was ist zufall? Ich könnte mir gut
vorstellen das ein Computer mit Camera der einen Würfel in der
luft erfassen könnte auch anhand der Dreh und
fallgeschwindichkeit, und erkennung des untergrundes die
Augenzahl schon vorher preisgeben könnte die am ende oben
liegt. Aber das geht wohl zu weit.

hallo Joe,

magels Wissen mache ich nicht mal den entferntesten Versuch da groß mitzureden.
Ich sehe das als Laie und finde für Laien reicht Randomize, so wie es ist.
Wenn CIA oder Mathematiker die „echte“ Zufallszahl brauchen, müssen sie sich die backen :smile:

„Dieser Generator besteht alle statistischen Tests“ besagt für mich nur, BISHER hat er alle Tests bestanden.

Aber die Naturwissenschaften sind da knallhart. Sobald sich einer meldet und einen Test entwickelt wo der Generator „durchfällt“ weill seine Ergebnisse doch ein Muster erzeugen und dieser Test wird weltweit anerkannt, dann wars das mit dem Generator.

Hat da nicht vor k.A. 10 jahren sogar ein Deutscher den Nobelpreis erhalten dafür daß es irgendwo in der Physik eine bis dahin nicht bekannte Konstante fand?
Kann auch sehr gut sein, daß er herausfand, daß eine bis dahin immer als fest angenommene Konstante doch nicht konstant ist.
Irgendwas in der Art war da mal.

Gruß
Reinhard