Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

11

23.01.2012, 09:53

Zitat

Nur, wenn man die Zeit als Parameter für srand verwendet.


Oh jau sorry.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

12

23.01.2012, 10:23

Auch dann sucht weder rand, noch srand zufällige Zahlen aus dem RAM.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

13

23.01.2012, 10:59

Zumindest unter Linux gibt es aber auch einen Random-Pool, der aus allen möglichen Systemereignissen gefüttert wird (z.B. Tastatur/Mauseingaben des Benutzers). Das ist dann vielleicht noch keine perfekte Zufallszahl, aber um einiges besser, als Pseudozufallszahlen. Das würde ich dann schon als echte Zufallszahl aus dem PC werten.
Lieber dumm fragen, als dumm bleiben!

14

23.01.2012, 21:43


Bei rand() ist nur garantiert, dass srand() mit einem bestimmten Seed ungleich 1 immer wieder die selbe Sequenz erzeugt, aber nicht wie die genau auszusehen hat.
Das heißt also, dass auf einem andren PC bei gleichem Seed andere Zahlen generiert werden? Wenn das stimmt, muss ich wohl auf <random> wechseln.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

15

23.01.2012, 21:50

Na ja, solange es immer auf x86er CPUs ausgeführt wird, ist die Chance eher sehr gering, dass die Zahlen unterschiedlich enden. Unterschiedliche Compiler, die unterschiedliche Bibliotheken benutzen, resultieren aber sehr wahrscheinlich in verschiedenen Ergebnissen für rand().
Also entweder selber schreiben oder <random> nehmen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

16

23.01.2012, 23:20

Das heißt also, dass auf einem andren PC bei gleichem Seed andere Zahlen generiert werden? Wenn das stimmt, muss ich wohl auf <random> wechseln.

Ja, wie gesagt, man muss sich immer vergewissern, was einem garantiert wird. Zufallszahlen als deterministische Zahlenfolge zu betrachten, nur weil es daheim beim testen funktioniert ist da keine gute Idee.
Erinnert mich an dieses alte Rennspiel, wo der Programmeirer nicht wusste, wie er die Größe des RAMs bekommen kann und einfach in 1kb Blöcken so lange Speicher allokiert hat, bis nichts mehr ging, dann alles wieder gelöscht hat, und wusste, wie viel Speicher ihm zur Verfügung stand. Man kann sich ja denken, Wie lange die Ladezeiten heutzutage bei 8 gig Ram ausfallen :D Ist halt Schade, wie so Fehler erst Jahre später ins Gewicht fallen können und dann sehr sehr ärgerlich sind.
=> Nur weil es scheinbar geht, ist es noch lange nicht richtig und erst Recht nicht schön.
Lieber dumm fragen, als dumm bleiben!

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

17

24.01.2012, 00:41


Bei rand() ist nur garantiert, dass srand() mit einem bestimmten Seed ungleich 1 immer wieder die selbe Sequenz erzeugt, aber nicht wie die genau auszusehen hat.
Das heißt also, dass auf einem andren PC bei gleichem Seed andere Zahlen generiert werden? Wenn das stimmt, muss ich wohl auf <random> wechseln.

Nein, die Zahlenfolge wird auf jedem PC gleich aussehen. Auch wenn dus auf ner x64 CPU laufen lässt.
Sie kann sich nur ändern, wenn du den Compiler oder die Laufzeitumgebung änderst.
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

Werbeanzeige