Permalänk

for loop stiger över 100?

Hej!

let summa = 0; let dice = 0; for(let i = 0; summa <= 100; i++) { dice = Math.floor(Math.random() * 6) summa += dice console.log(summa) }

jag gör ett litet test nu, är rätt ny och vill öva mig runt.

här har jag gjort en tärning, där den skriver ut random nummer.

Men problemet är att den stiger även över 100, den stannar inte på 100 eller lägre även om jag har det i for loopen, hur löser jag det? En if sats kan jag tänka mig men hur?

Det går att göra i en while loop med antar jag på liknande sett som for?

Hade uppskattat hjälp här

Ha det bäst!

Visa signatur

Big Bang Theory
Howard Wolowitz

Permalänk
Hedersmedlem

För det första, du använder inte variabeln i någonstans, så du kan skriva om koden så här:

let summa = 0; let dice = 0; while(summa <= 100) { dice = Math.floor(Math.random() * 6) summa += dice console.log(summa) }

Problemet är att du lägger till på summan och SEDAN kollar om summan fortfarande är under 100.

Vad är det exakt du vill uppnå? Ska du stanna när det kommer ett tärningskast som gör att du hade hamnat över 100? Du kan ju inte veta vad tärningen visar innan du kastat den... såvida du inte stannar om summa > 94...

I så fall får du kasta tärningen, kolla om summan överstiger 100. Om nej, lägg till summan och fortsätt, om ja, avbryt utan att lägga på summan.

Permalänk
Medlem

if (sum + dice > 100) { break; }

Innan du adderar, alternativt kan du köra <= 94 som nämnts och lösa resterande efter men det kan ju bli fler en ett tärningsslag.

Du kommer också få väldigt få 6or med tanke på att floor rundar nedåt till närmsta heltal.

Permalänk
Skrivet av kronwalled:

Du kommer också få väldigt få 6or med tanke på att floor rundar nedåt till närmsta heltal.

Men å andra sidan, blir det fler nollor än man vanligtvis brukar få på sin tärning.

Permalänk
Hedersmedlem
Skrivet av kronwalled:

if (sum + dice > 100) { break; }

Innan du adderar, alternativt kan du köra <= 94 som nämnts och lösa resterande efter men det kan ju bli fler en ett tärningsslag.

Du kommer också få väldigt få 6or med tanke på att floor rundar nedåt till närmsta heltal.

Inga sexor alls. Math.random() returnerar aldrig 1,0.