phpbar.de logo

Mailinglisten-Archive

[php] Gleichmäßige (Gewinn-)Verteilung innerhalb eines Zeitraumes

[php] Gleichmäßige (Gewinn-)Verteilung innerhalb eines Zeitraumes

Oliver Baran obaran at gmail.com
Mi Apr 6 16:41:12 CEST 2011


Hallo Mathias,

danke für Deine Idee.

Mein Ansatz ist nun folgender:
################################################################

Start
--------------------
Berechne die Sekunden bis zum 1. Gewinn nach dem Startzeitpunkt
anzahl_sekunden_bis_gewinn = (Zeitpunkt_Ende - Zeitpunkt_Start) /
Anzahl_der_gesamt_Gewinne

1. Teilnahme (oder keiner hat bis jetzt gewonnen)
--------------------
Ist der Zeitpunkt_Teilnhame >= Zeitpunkt_Start + anzahl_sekunden_bis_gewinn
 Ja, ist größer gleich:
   Gewonnen!
   Berechne erneut die Sekunden bis zum nächsten Gewinn nach diesem Gewinn:
     anzahl_sekunden_bis_gewinn = (Zeitpunkt_Ende -
Zeitpunkt_Teilnhame) / Anzahl_der_noch_uebrigen_Gewinne
 Nein, ist ist kleiner:
   Verloren!
   Mache nichts weiter.

====================

2. Teilnahme (angenommen die vorherige Teilnahme hatte gewonnen)
--------------------
Ist der Zeitpunkt_Teilnhame >= Zeitpunkt_letzter_Gewinn +
anzahl_sekunden_bis_gewinn
 Ja, ist größer gleich:
   Gewonnen!
   Berechne erneut die Sekunden bis zum nächsten Gewinn nach diesem Gewinn:
     anzahl_sekunden_bis_gewinn = (Zeitpunkt_Ende -
Zeitpunkt_Teilnhame) / Anzahl_der_noch_uebrigen_Gewinne
 Nein, ist kleiner:
   Verloren!
   Mache nichts weiter.

etc.

################################################################


Was meint ihr?

Grüße
Oliver

Am 6. April 2011 14:59 schrieb Mathias Gloß (www.gmail.com) <mgloss at gmail.com>:
> Aloha,
>
> Am 6. April 2011 14:19 schrieb Oliver Baran <obaran at gmail.com>:
>
> Ich möchte eine bestimmte Anzahl an (verschiedenen) Gewinnen in einer
>> bestimmten Zeit gleichmäßig an eine unbestimmte Anzahl an Teilnehmern
>> verteilen dabei darf es auch Nieten geben.
>> Beispiel:
>> Gewinn A: genau 500 zur Verfügung
>> Gewinn B: genau 10 zur Verfügung
>> Gewinn C: genau 5000 zur Verfügung
>> Zeitraum genau 8 Wochen
>>
>> *Nun soll es so sein, dass die Gewinne über den gesamten Zeitraum
>> relativ gleichmäßig verteilt ausgegeben werden.
>> *
>
>
> da hast du doch schon die Lösung :)
>
>
>> Das "Nietengewicht" müsste also in Abhängigkeit von den Teilnehmern,
>> den noch offenen Gewinnen und der Zeit stehen.
>>
>
> Die Teilnehmerzahl an sich ist dann uninteressant, nur die Zeit ist
> interessant.
>
> 8 Wochen sind *rechen* 8 * 24 * 60 * 60 Sekunden, das sollten also 691200
> Sekunden sein.
> Gewinne hast du 5510, d.h. alle 691200 / 5510 = *125 Sekunden* gibts einen
> Gewinn.
>
> Jetzt musst du das nur noch passend praktisch lösen und auf jeden Fall
> sicherstellen, daß jeder 125-Sekunden-Gewinn:
> a) nur einmal abgeholt wird
> b) auf jeden Fall abgeholt wird
>
> a) lässt sich durch Sperren erledigen, b) durch < statt = beim Zeitvergleich
>
>
> Grüße, Mathias
> --
> ** Allgemeine deutschsprachige PHP-Liste: php at phpbar.de **
> Informationen: http://www.phpbar.de
> http://lists.phpbar.de/mailman/listinfo/php
>

php::bar PHP Wiki   -   Listenarchive