Sida 1 av 2
Python / mattekontroll
Postat: 16 december 2015, 21:30:14
av Nifelhem
Dottern satt och funderade på hur många barn som måste födas för att det skulle finnas någon som fyllde år varje dag på året. Har glömt eller förträngt kunskaperna från lektionerna med sannolikhetslära i skolan. Jag skrev ett litet program som löser uppgiften "med våld" (tror jag). Jag tycker dock att svaren blir lite låga. Jag trodde att det skulle krävas en massa människor innan det slumpade till sig så att alla dagar hade minst ett födelsedagsbarn. Kan ju också, vilket är sannolikt

, vara fel på logiken i programmet.
Ungefär hur många tycker/tror/antar/VET ni att det borde bli? Förmodligen en enkel matteformel för detta. Får väl säga DOH sen då.
Kod: Markera allt
#!/usr/bin/python
# -*- coding: ISO-8859-1 -*-
import os
import random
os.system('cls')
os.system("chcp 1252")
os.system('cls')
os.system("color 1e")
#Create list
lista = []
for i in range (365):
lista.append(0)
antal = int(raw_input ("\n \n antal? "))
#loop while min value of list is below antal-1
count = 0
while (min(lista) <= antal-1):
r = random.randrange(1, 366, 1) #random could include 1 to 366-1
lista[r-1] += 1 #r-1 to fit index for lista(0)
count += 1
summa = 0
print lista
for i in range (len(lista)):
summa += lista[i]
print "\n Number of iterations: ", count
#print "\n List index for target value (useless): ", lista.index(10)
print "\n Count for antal : ", lista.count(antal)
print "\n Max value element: ", max(lista)
print "\n Min value element: ", min(lista)
print "\n sum: ", summa
print "\n average per day: ", summa/365
for x in range (min(lista), max(lista)+1):
print x, lista.count(x)
raw_input ("\n \n Press <ENTER> to end program")
Re: Python / mattekontroll
Postat: 16 december 2015, 21:40:45
av bearing
Går det att räkna ut?
Spontant känns det som att man kan räkna ut någon sannolikhet, men att bestämma ett antal tror jag inte.
Re: Python / mattekontroll
Postat: 16 december 2015, 21:42:20
av danielr112
Du får ju inte glömma att ta i beaktsamhet att det finns dagar på året som är vanligare att det "skapas" barn på än andra

Re: Python / mattekontroll
Postat: 16 december 2015, 22:09:33
av Nifelhem
bearing skrev:Går det att räkna ut?
Spontant känns det som att man kan räkna ut någon sannolikhet, men att bestämma ett antal tror jag inte.
Nä, något exakt antal lär det väl inte bli. Det var väl inte tanken heller. Programmet ger olika resultat vid varje körning. Dock inte jättestort spann.
Re: Python / mattekontroll
Postat: 16 december 2015, 22:11:48
av Nifelhem
danielr112 skrev:Du får ju inte glömma att ta i beaktsamhet att det finns dagar på året som är vanligare att det "skapas" barn på än andra

Hittade ingen algoritm för att hantera midsommarafton.

Re: Python / mattekontroll
Postat: 17 december 2015, 00:27:53
av kodar-holger
Midsommarafton är väl typ den 24e juni.
Men jag gissar på 2151,5.
Re: Python / mattekontroll
Postat: 18 december 2015, 22:59:28
av kodar-holger
Jag trodde jag skulle få fatt i nån på jobbet som kan sånt här innan välbehövlig julledighet infann sig men så blev inte fallet. Min amatörmässiga gissning ovan byggde på följande resonemang:
En person kan ju fylla på vilken dag som helst.
Sannolikheten för att en andra person skall fylla på en annan dag är då:
\(p=\frac{364}{365}\)
En tredje person får ju inte fylla på samma dag som någon av de båda tidigare. Om jag inte tänker alldeles galet borde sannolikheten för det vara:
\(p=(\frac{364}{365})^2\)
Att jag inte använde 364*363 i täljaren beror på att vi ju inte vet om de två första föddes på samma dag eller ej. Alltså 364/365 för det är samma sannolikhet mot båda och produkten borde vara totala sannolikheten för en ny dag.
Sen kan man ju extrapolera resonemanget till n:e personen så att
\(p=(\frac{364}{365})^{n-1}\)
Nu är det ju sannolikheter och inte sanningar så man kommer ju aldrig till 0. Så vad är tillräckligt liten sannolikhet att n:e personen skall få en egen födelsedag för att anta att alla redan är upptagna? Jag tänkte:
\((\frac{364}{365})^{n-1}<\frac{1}{365}\)
Sen var det ju bara att lösa ut n och få
\(n= \frac{ln(\frac{1}{365})}{ln(\frac{364}{365})}+1\)
För att verifiera resonemanget använde jag metoden på tärningsslag. Hur många slag måste man i medeltal slå för att ha fått 1-6? Enligt formeln ovan blir det ca 10,82. Praktiska övningar gav tyvärr ca 14,29. Det är tillräckligt stor skillnad för att jag skall påstå att mitt resonemang är fel.

Undrar hur det funkat i Harrisburg?
Re: Python / mattekontroll
Postat: 19 december 2015, 09:03:00
av Nerre
Det där med tärningen borde ju finnas uträknat som exempel nånstans... Jag försökte googla lite men hittade inte något konkret. Däremot hittade jag ett tips att göra träd-diagram.
Man kan ju börja med slantsingling innan man går till tärningen och sen till födelsedagarna.
Re: Python / mattekontroll
Postat: 19 december 2015, 10:34:20
av Swech
fakultet....
om du drar 4 kort ur en kortlek
för första finns 52 möjligheter
andra 51
tredje 50
fjärde 49
antal kombinationer är 52*51*50*49
Sedan har du 4 kort i näven
dessa kan du blanda på 4 * 3*2*1 sätt
så totala antal kortkombinationer är 52*51*50*49 / 4*3*2*1
Swech
Re: Python / mattekontroll
Postat: 19 december 2015, 10:59:05
av Klas-Kenny
Låter väldigt mycket som "Coupon collector's problem"
https://en.m.wikipedia.org/wiki/Coupon_ ... 7s_problem
Edit: Nu har jag tillgång till räknare, så, "svaret" (om man nu kan tala om definitiva svar i rent statistiska beräkningar) borde vara att ~2360 barn måste födas. Förutsatt att det är samma sannolikhet för alla dagar på året, vilket kanske inte riktigt är verkligheten.
Re: Python / mattekontroll
Postat: 19 december 2015, 20:28:15
av sodjan
> Edit: Nu har jag tillgång till räknare, så, "svaret" borde vara att ~2360 barn måste födas.
Måste födas, för att vadå?
Det finns självklart ingen garanti att alla dagar har minst en födelsedag,
det finns det aldrig oavsett hur stort antalet är. Det enda som händer
är att sannolikheten blir större och större...
Re: Python / mattekontroll
Postat: 19 december 2015, 20:34:20
av Lennart Aspenryd
I tidernas begynnelse, nåja förr i tiden fanns det fertilitetscykler, med brunst som alla andra djur.
Födelsetalen är fortfarande ganska varierande, så en matematiskt riktig siffra finns inte, inte ens på månaden 30,4 dagar. Dessutom har faktiskt världsliga händelser inverkan på fertiliteten.
Men det är inte lika enkelt som hur många sockor måste man ta ur byrålådan i det mörka rummet som rymmer 25 vita och 30 svarta par, innan man har ett par som man kan ta på sig, maka alltså!
Re: Python / mattekontroll
Postat: 19 december 2015, 22:26:48
av Klas-Kenny
sodjan skrev:
Måste födas, för att vadå?
Det finns självklart ingen garanti att alla dagar har minst en födelsedag,
det finns det aldrig oavsett hur stort antalet är. Det enda som händer
är att sannolikheten blir större och större...
Naturligtvis, men nu handlade ju tråden om hur många som behöver födas enligt en rent statistisk modell baserad på slumpmässiga utfall. I vanlig ordning när man behandlar sådant så är det ju ingen garanti att utfallet faktiskt skulle vara som man beräknat, likväl som det kan ske efter redan 365 dagar.
TS fråga har ju absolut inget definitivt svar, men jag skulle nog tro att det är svårt att komma fram till ett så mycket bättre svar än vad jag nämnde (utan att då som sagt ge olika dagar olika sannolikheter, baserat på ytterligare statistiska modeller, men det skulle ju inte heller ge ett definitivt svar).
Re: Python / mattekontroll
Postat: 19 december 2015, 22:44:30
av kodar-holger
Nu har jag bara skummat igenom förklaringen men det skulle vara kul att vara en fluga på väggen hos Nifelhem när han drar den där förklaringen för dottern
Och 15e april lär vara sveriges vanligaste födelsedag. Gissa varför jag vet det.
Re: Python / mattekontroll
Postat: 19 december 2015, 23:46:52
av sodjan
> men nu handlade ju tråden om hur många som behöver födas enligt en rent statistisk modell baserad på slumpmässiga utfall.
Förutsättningen var att det skulle finnas garanti att alla dagar var tagna.
Inte att det var med en viss sannolikhet.
> Dottern satt och funderade på hur många barn som måste födas för att det skulle finnas någon som fyllde år varje dag på året.
Svaret är att det inte finns något sådant antal. Det finns aldrig någon garanti att alla dagar prickas in.
Så att försöka sätta ett antal på det är meningslöst och det gör dottern en björntjänst.
Om man tycker att det är svårt att förklara så kan man ju prova med en tärning.
Hur många kast behövs det för att 1-6 ska inträffa minst en gång? Efter ett tag
så märker man att det inte finns någon bestämd övre gräns och att antalet
varierar ganska kraftigt från en kastserie till en annan.
Nu så vet vi ju inte åldern på dottern, men jag vänder mig mot att man ska ge
direkt felaktiga svar. Att svara "~2360" ser jag inte alls hur det hjälper dottern.