12 svar
69 visningar
Mercy är nöjd med hjälpen!
Mercy 28
Postad: 2 maj 2020

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?

cjan1122 Online 198
Postad: 2 maj 2020

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 spoilerantal=0
for i in range(n):
dice=random.randint(1,6)
 
if dice==5 or dice==6:
antal+=1
Mercy 28
Postad: 2 maj 2020

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!

Mercy 28
Postad: 2 maj 2020

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!

cjan1122 Online 198
Postad: 2 maj 2020 Redigerad: 2 maj 2020

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

Mercy 28
Postad: 2 maj 2020

cjan 1122

Ska testa den faktiskt! Tack för ditt engagemang!

Mercy 28
Postad: 2 maj 2020

cjan1122

 

Har testat och jag får en blockering av  antal+= 1 så vet jag inte hur ska jag göra!

Laguna 8580
Postad: 2 maj 2020
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? 

Mercy 28
Postad: 2 maj 2020

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

Mercy 28
Postad: 2 maj 2020

Ja precis!

Men äntligen har jag kunnat besvara. Tack alla för ert engagemang!

Laguna 8580
Postad: 3 maj 2020

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".

Svara Avbryt
Close