12 svar
284 visningar
Mercy behöver inte mer hjälp
Mercy 33
Postad: 2 maj 2020 18:20

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)

Lindehaven 820 – Lärare
Postad: 2 maj 2020 18:46

Du får knappast något resultat alls förutom ett felmeddelande på rad 7, eller hur?

cjan1122 416
Postad: 2 maj 2020 18:48

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 33
Postad: 2 maj 2020 18:48

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 33
Postad: 2 maj 2020 18:54

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 416
Postad: 2 maj 2020 19:01 Redigerad: 2 maj 2020 19:02

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 33
Postad: 2 maj 2020 19:06

cjan 1122

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

Mercy 33
Postad: 2 maj 2020 19:31

cjan1122

 

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

Laguna Online 30478
Postad: 2 maj 2020 21:58
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 33
Postad: 2 maj 2020 23:03

Laguna

 

Att det står "IndentationError: expected an indented block" 

Lindehaven 820 – Lärare
Postad: 3 maj 2020 00:00

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 33
Postad: 3 maj 2020 00:02

Ja precis!

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

Laguna Online 30478
Postad: 3 maj 2020 07:04

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
Close