Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Gewichteter Zufall

  Alt 6. Mär 2008, 13:52
Bei gewichtetem Zufall habe ich spontan an eine Zuordnungsliste gedacht. Alle Personen bekommen einen je gleich großen Zahlenbereich zwischen 0 und 1 zugewiesen. Mit einer Zufallszahl geht man dann in diese Liste, und schaut in wessen Bereich sie liegt. Anschließend wird die Liste neu Aufgebaut, wobei der Bereich der zuletzt gezogenen Person um einen Faktor verkleinert wird, während die Bereiche der anderen prozentual gleichmäßig vergrößert werden, so dass alle Bereich in Summe wieder 1 ergeben.
Das System ist allerdings dann gesprengt, wenn jemand so oft hintereinander gezogen wird, dass sein Bereich 0 wird (dank Ungenauigkeiten von Floats). Die Wahrscheinlichkeit dafür dürfte aber sehr gering sein, und ließe sich durch Einführen eines Minimums leicht beheben.
Dies ließe sich sogar finetunen, da man über den Faktor bestimmen kann, wie stark ein gezogener "bestraft" werden soll, und sogar ob dies linear, prozentual, oder nach welchem Gesetz auch immer statt finden soll. Ebenso ist die Verteilung des frei gewordenen Bereichs anpassbar, so dass z.B. jemand mit großem Bereich stärker profitieren würde als jemand im Mittelfeld.

Was ein solches Verfahren generell bewirkt ist, dass die Gleichverteilung auf alle Zufallszahlen eines Seeds bereits für eine kleinere Untermenge wählbar schnell forciert wird.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat