Antal förekomster av tal
kan någon säga vad gör för fel här. Hur än jag gör jag får inte korrekt svar och jag blir tacksam om någon här kan berätta för mig hur ska jag göra då har uppgiften enligt:
- Använd funktionen roll_dice för att simulera 10000 tärningskast
- Räkna antal förekomster av 5:or eller 6:or
- Vad är sannolikheten att få 5 eller 6 på tärningen?
- Är den simulerade sannolikheten nära den faktiska sannolikheten att få 5 eller 6?
och min kod är:
from random import randint
raknare = 6
n = int(input("Ange antalet kast: "))
def roll_dice(n):
dice = random.randint(1,n)
return (dice)
print ("antalet förekomester av 5:or och 6:or är" + str(2/6 * n))
print("Sannolikheten att få 5 eller 6 på tärningen : " + str(2/6 * n) + " %.")
# Använd funktionen
roll_dice(n)
Du får knappast något resultat alls förutom ett felmeddelande på rad 7, eller hur?
Din funktion genererar ett slumptal mellan 1 och n. Det du vill göra är att använda en loop som loopar igenom n gånger och ger dig ett randint mellan 1 och 6 varje gång den gör det. Sedan kan du fixa så den räknar varje gång loopen genererar en 5a eller 6a.
Visa spoiler
antal=0for i in range(n):
dice=random.randint(1,6)
if dice==5 or dice==6:
antal+=1
ja precis!
Jag vet att första koden är rätt med roll_dice:
from random import randint
raknare = 6
n = int(input("Ange antalet kast: "))
def roll_dice(n):
dice = random.randint(1,n)
return (dice)
men sedan måste jag kunna räkna antal förekomster av 5 or och 6 or vilket inte fungerar!
cjan 1122
Tack för ditt svar. Men om jag ska visa sannolikheten och sedan simulera den med det faktiska .
Det känns som att jag byter rader och koder men det finkar inte!
Tänk igenom det i steg.
Simulera 10000 kast med roll_dice, om kastet är 5 eller 6 ökar du antal med 1 där antal står för antalet 5or och 6or. När loopen har fått köra igenom 10000 gånger kommer den returnera antalet 5or och 6or du fick. Detta är det simulerade värdet. Den riktiga sannolikheten vet du ju är 1/3. Hoppas det är tydligt
def roll_dice(n)
antal=0
for i in range (n):
dice=random.randint(1,6)
if dice==5 or dice==6:
antal+=1
return antal
cjan 1122
Ska testa den faktiskt! Tack för ditt engagemang!
cjan1122
Har testat och jag får en blockering av antal+= 1 så vet jag inte hur ska jag göra!
Mercy skrev:cjan1122
Har testat och jag får en blockering av antal+= 1 så vet jag inte hur ska jag göra!
Vad menar du med blockering?
Laguna
Att det står "IndentationError: expected an indented block"
Indentering är grundläggande i Python så det behöver du förstå. Felmeddelandet säger att det förväntas ett indenterat block, d v s att kodblocket ska ha ett indrag:
if dice==5 or dice==6:
antal += 1
Ja precis!
Men äntligen har jag kunnat besvara. Tack alla för ert engagemang!
Bra att det löste sig. När det kommer felmeddelanden så visa dem alltid exakt som de står när du undrar om dem. "Block" betyder förvisso blockera på engelska, men här betyder det inte det, utan "ett block", "en bit", "ett stycke".