Avatar billede melange Nybegynder
24. februar 2003 - 19:17 Der er 22 kommentarer og
1 løsning

Sansynlighedsproblem!

Jeg sad og diskuterede lidt sansynlighedsregning med en af mine venner, og han stille mig gåden (kan ikke huske navnet på den):
"Du har tre døre. Bag den ene er der er Jaguar som alle vil have, og bag de to andre er der en ged.
Du vælger nu en af dørene, men efter at du har gjort det fjerner værten en af de falske døre (Hvis du har valgt en falsk dør fjerner han den anden).
Du får nu mulighed for at lave et nyt valg.

Hvad vil du gøre ?
Hvordan vil det have indflydelse på sansynligheden for at få Jaguaren ?
Hvor meget vil det forbedre dine chancer, hvis det overhovedet forbedre dem ?"

Idag fandt jeg så ud af at det kunne være sjovt at simulere situationen på en computer, og jeg satte mig ned og lavede et PHP-script som kunne det.
Jeg gav så manden to muligheder.
-Enten vælger han konsekvent den anden dør.
-Eller også er der 50/50 hvilken dør han vælger.

Jeg afprøvede så scriptet på min computer for at se hvordan det kørte, og det så *næsten* fint ud.

-Vælger manden konsekvent den anden dør får han jaguaren i 2/3 af alle tilfælden, hvilket er korrekt.
-Vælger han så en dør tilfældigt påstår scriptet at han får Jaguaren i 1/3 aa alle tilfælde. (Her er jeg uenig, da jeg synes det burde være 50%, men jeg kan jo have lavet en fejl, og er heller ikke 100% sikker på at det burde være 50%)

Mit spørgsmål opstår nemlig når jeg så uploader script til min server, så min ven kan se det.
Her sker der nemlig det at script stadigvæk påstår der er 2/3 chance for at få Jaguaren hvis han vælger den anden dør, men 1/3 hvis han vælger en tilfældig dør !

Og dette var ikke bare i et enkeltstående tilfælde, men hele tiden.
Her er 10 resultater taget på stribe fra henholdsvis min computer, og min server, hvor antal mulige er sat til 1000

Min computer:
350
337
342
345
331
336
342
354
343
352

Min server:
243
265
223
258
249
259
266
247
245
257

Som i kan se går der noget helt galt, men kan nogen forklare mig hvad der kan være årsag i at den regner forskellige tal ud i med den ene mulighed, men ikke med den anden !
I kan se scripet her og evt selv test på jeres egen computer, eller kigge efter fejl i det :)

http://www.knast.dk/sansynlighed
Avatar billede mortrr Praktikant
24. februar 2003 - 19:40 #1
Forskellen på de to computere kan være en forskel i php-version. Før/efter 4.2
?

Men, er det ikke en forkert beregning du gør?
Jeg kender ikke "opgaven", men hvis værten fjerner 1 dør, er der da kun 2 døre tilbage at vælge mellem (og ikke 3 som du vælger mellem).

Og ved værten ikke hvilken dør jaguaren er bag? Så bør han ikke vælge en tilfældig dør ud af tre, men bare fjerne den "forkerte" dør.

Eller har jeg misforstået det hele?

- Morten
Avatar billede alrua Nybegynder
24. februar 2003 - 19:47 #2
nåja, du skal lave en srand...fra manualen:

"In older versions of PHP, you had to seed the random number generator before use with srand(). Since 4.2.0 this is no longer necessary."

hvad angår scriptet vil jeg lige kigge på det når jeg har spist :)
Avatar billede melange Nybegynder
24. februar 2003 - 19:59 #3
mortrr << hmm....jo nu når jeg kigger på det ser det ud som jeg laver noget forkert i slutningen af scriptet. Ja, nu har jeg fundet fejl :) men jeg har ingen ide om hvorfor jeg laver den.

while ($andet_valg != $door[$remove]) {
    $andet_valg = rand(0,2);
}

// Hvis hans andet valg er Jaguaren får han et point
if ($door[$andet_valg] == 'Jaguar') {

    $succes++;
}

Det er rigtigt jeg her FØRST tjekker om $andet_valg er lig den fjernede dør, og senere giver den en ny værdi.
Du skulle selvfølgleig være omvendt, jeg jeg giver $andet_valg er værdi, bagefter tjekker om den har fået samme værdi som den fjernede døt, og hvis den har det prøve at give den en ny værdi igen :)

alrua << det er rigtigt at det ikke er samme version af PHP på min compiter og på min server, men min server kører 4.2.3 og jeg kører 4.3 så begge er nyere end 4.2, og desuden kan der da ikke være tale om at samme udregning burde afvige SÅ meget fra hinanden. Og så hele tiden
Avatar billede jakoba Nybegynder
24. februar 2003 - 20:42 #4
jeg forstår ikke helt opgaven. det er da flintrende ligemeget hvilken dør du gærtter på i første hug.

hvis du vælger den med jaguaren bag får du jaguaren. det sker 1/3 af gangene.
hvus du vælger en dør og han så fjerner en anden dør ved du at både den du valgte og den han fjernede indeholder geder. så du kan med sikkerhed vælge den tilbageværende dør du endnu ikke har valgt og få jaguaren. det sker 2/3 af gangene.

du får jaguaren 100% af gangene du vælger.

medmindre jeg har misforstået noget.

mvh JakobA
Avatar billede poldor Nybegynder
24. februar 2003 - 20:44 #5
sådan er det ikke!

Selv hvis du skulle være så heldig at få Jaguaren i første omgang går spillet videre og der bliver fjernet en dør. Du har altså ingen mulighed for at vide, hvorvidt du har ramt rigtigt i første hug eller ej!

POLDOR
Avatar billede jakoba Nybegynder
24. februar 2003 - 21:08 #6
Ok. men det betyder så at det at der fjernes en dør ikke fortæller os nogetsomhelst om hvad der er bag den dør vi valgte. Andet hug er sin egen ny situation og alt hvad vi ved ar at bag en af de 2 valgbare døre er der en jaguar. det giver 50% chance for at vælge rigtigt.

mvh JakobA
Avatar billede poldor Nybegynder
24. februar 2003 - 21:18 #7
ja - hvis man vælger tilfældigt derfra! Ikke hvis man vælger den anden dør konsekvent, så er der 2/3 chance for at få præmien.

Det er jo hele 'tricket' i opgaven!

/P
Avatar billede mortrr Praktikant
24. februar 2003 - 21:50 #8
Man kan da godt regne det ud. Eller?

Ved "intelligent" valg:
1 2 3
G J G
Vælges 1 fjernes dør 3.  2 er altså jaguar
Vælges 2 fjernes ingen døre. 2 er altså jaguar
Vælges 3 fjernes dør 1. 2 er altså jaguar
= 100% sandsynlighed

Ved tilfældigt valg har det første valg betydning for størrelsen af sandsynligheden:
1 2 3
G J G
Vælges 1 fjernes dør 3.  2 døre tilbage = 50%
Vælges 2 fjernes ingen døre. 3 døre tilbage = 33%
Vælges 3 fjernes dør 1. 2 døre tilbage = 50%

Eller byttes der om på dørene?

Jeg tror ikke helt jeg har forstået den opgave...

- Morten
Avatar billede jakoba Nybegynder
24. februar 2003 - 21:51 #9
nixen.

hvis du vælger samme dør konsekvent er det 50/50
hvis du vælger den anden dør konsekvent er det 50/50

det er ligesom den klassiske med at slå plat og krone. Det at du slog krone sidste gang gør det ikke mere sandsynligt at du slår plat denne gang.

mvh JakobA
Avatar billede mortrr Praktikant
24. februar 2003 - 21:55 #10
Nej.
Hvis der FJERNES en dør er der kun to døre tilbage.
Hvis vi vælger den rigtige dør er der stadig 3 døre tilbage.

- Morten
Avatar billede jakoba Nybegynder
24. februar 2003 - 22:13 #11
Så er vi tilbage til 100% sikkerhed. for nu fortæller vort første valg os om jaguaren er bag den valgte dør eller ikke.
hvis ingen dør fjernes vælger vi den samme igen i vished om at det er den.
hvis en dør fjernes kan vi vælge den anden i vished om at det er den korrekte.

men jeg tror nu der fjernes en dør før andet valg, uanset om vi valge korrekt første gang eller ikke.
Avatar billede melange Nybegynder
24. februar 2003 - 22:30 #12
okey, lad mig forklare hvorfor det er 2/3 for at ramme rigtigt.

Jeg vælger en dør. Nu er der 1/3 chance for at Jaguaren gemmer sig bag denne dør. Dette medfører at der er 2/3 chance for at jaguaren gemmer sig bag en af de andre dører.

-Enig ?

Nu bliver så den ene af de to andre døre fjernet, men chancen for at Jaguaren gemmer sig bag min dørbliver da ikke større af den grund.
Altså MÅ chancen for at Jaguaren gemmer sig bag den anden dør være 2/3.
-----
Det kan godt være mit script indeholder fejl (Hvilet jeg ikke tror det gør når man beder ham vælge den anden dør), men så sæt jer ned og prøv det i praktis.
Lav en test hvor i gentager forsøget 50 gange og se hvad statestikken fordeler sig.

Det er faktisk rigtigt.
Avatar billede melange Nybegynder
24. februar 2003 - 22:36 #13
mortrr << der fjernes ALTID en dør. Hvid du i første omgang vælger døren med Jaguaren er det tilfældigt hvilken dør som fjernes, hvis du vælger en "gede-dør" fjernes den anden "gede-dør"

Desuden har jeg lige fundet på en anden måde man kan indse at de må være 2/3 (eller 66%) chance hvis du altid vælger den anden dør som bliver tilbage.
Vælger du Jaguar-døren (1/3 chance) vil du have en gede-dør som den anden dør, og du vil ikke vinde. (hvis du vælger den).
Vælger du derimod en gede-dør i starten (2/3 chance) vil døren som bliver tilbage være Jaguar-døren, og derfor vil du vinde hvis du vælger den.

håber det hjalp
Avatar billede mortrr Praktikant
24. februar 2003 - 22:43 #14
Nååååhhh - jamen så giver det jo mening.

Så mangler vi bare at få at vide om du havde to forskellige versioner af php på de to maskiner.

- Morten
Avatar billede melange Nybegynder
24. februar 2003 - 22:46 #15
glæder mig du forstår det :)

men som jeg skrev før har jeg 4.2.3 på min server og 4.3 på min lokale maskine, men jeg har svært ved at forestille mig at rand() skal have ændret sig så meget, og give så forskellige resultater.
Avatar billede jakoba Nybegynder
24. februar 2003 - 23:14 #16
Jeg tillader mig at blive ved med at tro på 50/50. Det første valg er irellevant da det altid resulterer i 2 valgbare døre som vi ikke ved noget om hvad der er bag hver dør.

husk at i andet valg er der kun 2 døre at vælge imellem.
Avatar billede swaxi Nybegynder
25. februar 2003 - 00:34 #17
der vil altid være 1/2 chance for at ramme rigtigt i sidste tilfælde. det første valg betyder ikke noget. men ved det andet valg har du to døre tilbage, hvorom du intet véd. altså 1/2 chance (50/50)
Avatar billede olennert Nybegynder
25. februar 2003 - 00:47 #18
melange, tak for en smuk beskrivelse af et klassisk problem. Jeg havde kun tænkt på sandsynlighederne ved det andet valg. Ved at gøre det allerede ved det første valg ses det nemmere at der er 2/3 chance for at få fat i Jaguaren ved at skifte dør.
Avatar billede swaxi Nybegynder
25. februar 2003 - 00:59 #19
eh ... vi er enige om at ligegyldigt hvad du vælger i første runde, så fjernes der en dør mellem første og anden runde ?

det betyder at ligegyldigt hvad du så har gjort, så er der i anden runde kun to døre. og du ved intet andet end at den dør, der blev fjernet _ikke_ var den rigtige.
følgeligt har du 1/2 chance for at vælge rigtigt til sidst.
Avatar billede swaxi Nybegynder
25. februar 2003 - 01:00 #20
eller kan man få præmien allerede i første runde (forudsat at man rammer rigtigt, altså) ???
Avatar billede olebole Juniormester
25. februar 2003 - 07:39 #21
<ole>

rand() er ikke beregnet til statistiske beregninger. Det er den slet ikke god nok til. Den er beregnet til at vælge et 'tilfældigt' billede, citat eller lignende.
Skal man lave statistiske beregninger, er mt_rand() - med sin bedre algoritme - langt at foretrække  ;o)

/mvh
</bole>
Avatar billede melange Nybegynder
25. februar 2003 - 13:17 #22
Jeg det først valg er ikke helt ligegyldigt, da der jo er størst sansynlighed for at du ikke rammer jaguaren, og derfor bør du ramme den i anden omgang. Det lyder måske lidt som "jeg slog plat før, og slå derfor krone nu" men det er det ikke.

Lad os prøve med en "illustration", som "mortrr" lavedfør, og kigger på hvad der sker hvis man konsekvent ombestemmer sig.

1 2 3
G J G

-Vi tager dør 1. Da Jaguaren er bag dør 2 bliver dør 3 fjernet. Vi ombestemmer os, tager den dør som er tilbage (#2) og får jaguaren :)
-Vi tager dør 2. Da jaguaren er bag den dør bliver en af de andre fjernet. Vi ombestemmer os og vælger den forkerte dør :(
-Vi vælger dør 3. Denne situation er identisk med den første. Jaguaren er bag dør nr 2 og derfor bliver nr 1 fjernet. Vi ombestemmer os og får Jaguaren :)

Som det kan ses vil man altid få Jaguaren, hvis man vælger en ged første gang, og da der er 2 gede og 1 jaguar må chancen være 2/3.

---------
Olebole << Jeg har egentlig ikke brudt mig mt_rand() efter at jeg læste "delfs" artikel, hvor han sammenligner rand() med mt_rand(), men har alligevel uploadet samme script, hvor jeg bare bruger mt_rand() i stedet for rand(), men den ser faktisk ud til at skyde lidt over målet. I stedet for at give resultater omkring 666 giver den ca. 675 hvilket jo er forkert.
http://www.knast.dk/sansynlighed/mt_rand.php
Avatar billede jakoba Nybegynder
27. februar 2003 - 14:51 #23
Humm. Jeg kommer nok til at trække iland.
ved første valg er der 1/3 chance for at ramme raguaren. og den chance ændres ikk af at man efterfølgende fjerner en dør, der er stadig 1/3 chance for jaguar bag den først valgte dør; og der for 2/3 chance bag den snden dør der nu er tilbage af vælge.

den med 675 istedet for 666 er en småting. men din 'værlger tilfældigt anden gang' er gal.
din løkke:
    while ($andet_valg != $door[$remove]) {
        $andet_valg = mt_rand(0,2);
    }
giver ikke mening, så nedenfor er en bedre måde at vælge tilfædigt fra et 'interval med hul i'

// Her kører delen hvor han tager en tilfældig
if (isset($_POST['random'])) {

    $andet_valg = mt_rand(0,1);      // to at vælge imellem
    if ( $andet_valg >= $remove ) {
        $andet_valg++;                // sørg for ikke at ramme den fjernede dør
    }

    // Hvis hans andet valg er Jaguaren får han et point
    if ($door[$andet_valg] == 'Jaguar') {
        $succes++;
    }
}

mvh JakobA
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester