Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#14

AW: Zufallsgenerator mit Gewichtung (aber mit sehr großen Datenmengen)

  Alt 18. Jun 2014, 10:53
Zitat:
Hier mal mein Code der zwar funktioniert, aber nur wenn ich die Summen um den Faktor 100 dividiere.
Das klingt ja fast so, als wenn du da irgendwo z.B. einen Integerüberlauf bekommst, wenn es bei großen Zahlen nicht mehr geht.
[edit] Oder eben ein Speicherproblem: Arbeitspeicher ist voller Strings und auch die StringList selbst besitzt eine maximale Anzahl an möglichen Einträgen, und zwar sind das ganz genau Max(NativeInt) div (SizeOf(Pointer) * 2) in Win32 sind das maximal 268.435.455 Einträge, wobei es effektiv (auf Grund des Arbeitsspeichers) vielleicht nur maximal 32.768.000 Zeilen sind (eher weniger, da ich davon ausgegangen bin, daß ein freier 250MB-Bereich zusammenhängend existiert und jede Zeile einen Leerstring enthält ).



Habt ihr über 2 Milliarden € (2.147.483.647) als Gesamt-Einlagen?

Wenn nicht, dann sollte es keinen Überlauf geben.
OK, wenn man die Extremwerte nimmt, dann schon (150000*1000000 = 150.000.000.000), aber in der durchschnittlichen Summe doch wohl nicht.

Annahme: pro 1€ gibt es eine Gewinnchance
- Maximum Bereich des Zufallswertes errechnen = Einlagen aller Leute (eventuell jeweils auf ganze € abgerundet)
- Zufallswert bestimmen = Random(Gesamteinlage)
- dann wieder die Kunden durchgehen und solange von dem Zusfallswert die jeweilige Einlage abziehen, bis der Wert unter 0 sinkt ... das ist dann der Gewinner.

[edit]
Also im Prinzip so, wie es schon genannt wurde.

Vom Vorgehen her ist es wie dein Code, nur das die "Liste" nicht in Real, sondern nur virtuell erstellt wird und es somit nahezu keinen Speicherverbrauch gibt.
Denn, wenn man diese Liste nicht auch noch vermischt, dann lässt sich mathematisch berechnen welche Person sich in jeder Zeile befindet.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (18. Jun 2014 um 11:07 Uhr)
  Mit Zitat antworten Zitat