Eine Random generierte Zahl von 1-999 erstellen?

5 Antworten

Jede generierte Zufallszahl ist ausrechenbar. Denn sie wurde ja ganz offensichtlich ausgerechnet! Wenn man den selben Seed (Startwert) nimmt, dann kriegt man immer die selbe Folge von Zufallszahlen.

Um "echte" Zufallszahlen zu erzeugen muss man nichtdeterministische Elemente einbringen. Z.B. radioaktiven Zerfall oder Diodenrauschen messen. Hilfsweise Festplattentiming, Netzwerkaktivität usw. mit reinrechnen. So macht es z.B. der eingebaute Zufallszahlengenerator in Linux. Ob PHP auf diesen zurückgreift weiß ich nicht - "berechenbar" wäre es dann jedenfalls kaum mehr.

Ganz allgemein: Die rand-Funktion in vielen Programmiersprachen hat einen Startwert. Wenn man den weiß, dann kann man deine Zufallszahl nachrechnen. Das ist aber auch relativ aufwändig. Wenn das OK ist, dann kannst du die rand-Funktion nutzen. 

Wenn du selber mit den Pseudozufallszahlen, die rand ausspuckt rumrechnest, dann ist das in jedem Fall genauso nachvollziehbar und zudem könnte es dann passieren, dass deine Zufallszahlen nicht mehr gleichverteilt sind.

Wenn du echte Zufallszahlen brauchst, dann solltest du irgendeine API wie zum Beispiel random.org nehmen. Auf die Schnelle hab ich die Seite hier gefunden, die du vielleicht in PHP nutzen könntest

https://github.com/pixeloution/true-random

random.org bezieht seine Zufallszahlen glaub ich aus irgendeinem kosmischen Rauschen. Die Zufallszahlen so zu erzeugen, ist aber langsamer als über die rand-Funktion. Du müsstest selbst entscheiden, ob echter Zufall so wichtig für deine Anwendung ist, was willst du mit den Zufallszahlen denn machen?

Für echte Zufallszahlen kann es keine Formel geben, echte Zufallszahlen brauchen Chaos. :)

Wird wohl nicht viel helfen aber. Hol dir MATLAB oder einen kostenlosen numerischen Rechner. Und tippe folgendes ein. Das mit der Wahrscheinlichkeit ist aber auch interessant.

"rand" erzeugt eine zufällige Zahl zwischen 0 und 1.

Befehl: a = 1 + rand*998;

Vielleicht ist in deiner Software auch ein ähnlicher Befehl enthalten?


Vyled 
Beitragsersteller
 09.10.2015, 17:18

Das heißt es könnte 

1+1*998 raus kommen oder 1+0*998?
Sicher das dann auch die 1 mal gezogen werden kann?

addiere doch einfach was geheimes dazu. dann ist egal ob die methode ausrechenbar ist


FooBar1  09.10.2015, 17:21

Dann generier doch von 2 bis 1000 und zieh 1 ab

Vyled 
Beitragsersteller
 09.10.2015, 17:20

Dann wird aber auch sicher die 1 niemals gezogen

Pseudozufallsgeneratoren sind immer berechenbar, da sie deterministisch sind. Allerdings gibt es kryptographisch ziemlich sichere Pseudozufallsgeneratoren, Google mal genau danach