Præmie udtrækkelse, sandsynlighed med krav

Tags:    programmering

Hey

Jeg har en problem stilling med hensyn til en facebook konkurrence. Denne skal indeholde et skrabelod hvor brugerne har mulighed for at vinde forskellige typer præmier, rimeligt primitivt.
Dog vil kunde naturligvis gerne være kende omfanget af præmier der skal uddeles, der findes forskellige typer præmier - lad os sige 6 præmier med forskellige antal, samt 1 hoved gevinst pr dag.

Umiddelbart var det jo bare at smide 10.000 rækker i en database og tilfældigt trække en ud og præsentere for brugeren, men da kunde ønsker at der kun/SKAL udtrækkes 1 hovedgevinst hver dag, samt kunne administrere de yderligere 6 præmier på dagsniveau.
Så på en eller anden måde skal jeg have udarbejdet en eller anden form for algoritme, der i løbet af dagen stiger for at vinde hovedpræmien samt have et jævnligt dagligt fordelt vunde "side" præmier.

Altså lad os antage at jeg har:

1 x hovedpræmie
100 x præmie 1
200 x præmie 2
300 x præmie 3
400 x præmie 4
500 x præmie 5
1000 x præmie 6

Pr. dag

Her skal hovedpræmien vindes hver dag, samt størstedelen af de resterende præmier skal uddeles.

Jeg kender selvfølgeligt ikke antallet af "dagens" skrabelodder, hvorfor de resterende præmier nok i starten ikke vil blive vundet før konkurrencen tager ordentligt fat. Af erfaringer fra kundens tidligere konkurrencer ved jeg dog at deltagelsen i konkurrencen stiger ret progressivt i løbet de 4 uger den skal løbe. Hver dag, har en bruger ret til et skrabelod.

Desuden til udregningen ved jeg hvormange der har skrabet dagen før, og kan tilføjet tallet til algoritmen og efter et par dage lave lidt prognose over hvor mange jeg forventer der deltager den gældende dag.

Men vigtigst af alt er hovedpræmien ryger hver dag! -

Nogen der sidder inde med en go' løsning til ovenstående?

På forhånd tak
/Jacob



9 svar postet i denne tråd vises herunder
6 indlæg har modtaget i alt 44 karma
Sorter efter stemmer Sorter efter dato
Holder dette?

"Her skal hovedpræmien vindes hver dag, samt størstedelen af de resterende præmier skal uddeles."

Det vil sige at du på forhånd SKAL VIDE hvornår den SIDSTE tager et lod, ellers er du vel nødt til at give hovedpræmien til den første der deltager, i tilfælde af at der kun er EEN der deltager den dag. Godtnok en tænkt situation, men det påvirker alle dine andre resultater også.

Den eneste måde jeg kan se det fungere på er ved at man deltager med et antal lodder hver dag og så til sidst kan du trække præmier forholdsmæssigt i forhold til det antal lodder man deltager med (her er det i dit tilfælde kun et enkelt lod). Dette kræver at ALLE tager et log og når dagen er gået får de at vide om de har vundet eller ej.

Giver det mening?



Hvis en vinder af hovedpræmien ikke er udtrukket kan du benytte en procentvis forøgelse af chance for at hovedpræmien vælges når en vinder udtrækkes:

når x = antal præmier udtrukket, og a = antal præmier
p(x) = 1 - (a - x) / a

Hvis hovedpræmie ikke er udtrukket og rand() er inden for range((100 * p(x)), 100) da udtrækkes hovedpræmie, hvis ikke udtrækkes der fra anden præmieniveau.

Hvis modtager af hovedpræmie endnu ikke er fundet senest kl. 23:59:59 udtrækkes vinder af hovedpræmie.

Derved findes der altid en vinder af hovedpræmien.

Procentvise stigning kan også være baseret på tid:
p(x) = 86400 - (T2 - T1) / 86400.

T1 = Unixtime(NOW())
T2 = Unixtime('23:59:59')



Det er rigtig at det er muligt at kunne nå et køb mellem 23:59 og 00:00, men 23:59:59 er så tæt på kl. 00:00:00 at det vil være tilnærmelsesvist umuligt at nå at gøre et køb.
Dog kan det forekomme, men herved kan du så nærme dig yderligere ved at koble millisekunder på. Så er det bare ikke unix time du skal regne i. Men princippet er det samme.




Jeg tror sgu at det er mig der ikke lige havde fået det hele med. :)

Men...

du kan ikke være sikker på at hovedpræmien ryger, hvis du benytter vilkårligt baseret udtrækning, uden at du enten 1) ved givne tidspunkter på dagen øger chancen for udtrækning væsentlig over en periode, eller 2) ved at fastsætte nogle givne tidspunkter hvor hovedpræmien vil ligge som det næste lod.

Selv med løsning 1, vil der være en lille sandsynlighed for at hovedpræmien ikke ryger afsted.



Jeg tror ikke du kan lave det "retfærdigt" hvis hovedpræmien SKAL skubbes ud en given dag. Du vil altid skulle kompensere for at den SKAL skubbes. Det er også derfor en lottogevindst kan gå videre til næste uge



Enig, og Brian, nu ikke noget med at sidde 23:59 og lege med mine konkurrencer :)



Tak til Jer begge.

@Brian >>
"Her skal hovedpræmien vindes hver dag, samt størstedelen af de resterende præmier skal uddeles."

Ja det holder 100%, og det med der kun er meget få første dag er jeg enig i, og lidt mit egentlige problem - Men der bliver skubbet et højere beløb ud i facebook add's samme dag, så jeg formoder og håber på 1500+ første dag, og gætter mig til vi hurtigt ender på 10-15K+ dagligt i løbet af de 4 uger.

Det er selvfølgeligt (desværre) ikke muligt at annoncere vinderen senere når vi taler skrabelod, eller jeg ville blive godt skuffet med et quick lod hvor jeg havde vundet 13år's extra månedlig indtægt på 13.000 og det så viser sig at være en nitte - ellers skal konkurrence betingelserne ændres, så hovedpræmien dagligt trækkes blandt vinderne af de "andre præmier".

@Michael >> Takker, for den procentvise på tid, den tror jeg skal benyttes til de andre præmier - Men jeg skal sku være sikker på den ryger, og jeg ved ikke om der er en kl 23:59 trækker et lod :/

------

Overvejer at finde et random tidspunkt på dagen, lagre det, og efter dette smide ex 10xnitter og så hovedpræmien, men ved ikke helt hvad konkurrencestyrelsen mener om den. Men hvis det er 100% random mht til tid, så skulle jeg mene den gik igennem :/

Eller tage chancen og fyre hovedgevinsten af når dagen før's deltagere er gået igennem, altså ex første dag = 2000 deltagere, og så på anden dagen kaste den efter 2000 deltagere..



Indlæg senest redigeret d. 07.05.2012 13:54 af Bruger #5789
@Michael >> Ehmmm hvad er det jeg misforstår, altså jeg kan nemt have 1500 små gevinster (dagligt) men kun have 1000 brugere der har skrabet, hvordan vil du sikre at hovedpræmien ryger ? - Jeg er jo heller ikke interesseret i at alle 1000 bare vinder noget..

Edit: er først lige tilbage på pinden i morgen


vh



Indlæg senest redigeret d. 07.05.2012 15:31 af Bruger #5789
Super, så vi kan mere eller mindre konstatere at hovedpræmien skal "skubbes" ud på en mere eller mindre uhensigtsmæssigt fair metode ? :)

Jeg finder på en eller anden skummel kombination :)

Igen tak for Jeres tid.



t