micropython icon indicating copy to clipboard operation
micropython copied to clipboard

This program example iw wrong

Open rhubarbdog opened this issue 5 years ago • 3 comments

I'm looking at the page for random https://microbit-micropython.readthedocs.io/en/latest/tutorials/random.html there is this program example of a dice

from microbit import *
import random

display.show(str(random.randint(1, 6)))

further down the page random seed is intorduced with this program for a dice

from microbit import *
import random

random.seed(1337)
while True:
    if button_a.was_pressed():
        display.show(str(random.randint(1, 6)))

The page then goes on to say "Can you work out why this program needs us to press button A instead of reset the device as in the first dice example..?"

when i set the seed to 123 I reset the microbit then press button_a to release each number and always get the sequence 6,1,1,1,1,1.
The pressing of button_a is doing nothing to effect the sequence of numbers

The program should be

from microbit import *
import random

random.seed(123)
while True:
    number = random.randint(1, 6)
    if button_a.was_pressed():
        display.show(str(number))

rhubarbdog avatar May 15 '19 13:05 rhubarbdog

With a seed of 123 I get the sequence: 6, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 1, 3, ...

So I don't think there's anything wrong.

dpgeorge avatar May 17 '19 04:05 dpgeorge

Is it not the case that the phenomenon of setting a seed and always getting the same sequence should be shown with this code

for _ in range(2):
    random.seed(123)
    for i in range(7):
        print(random.randint(1,6))

I think to use seed with a dice example gives poor indication of what is trying to be demonstrated

rhubarbdog avatar May 17 '19 04:05 rhubarbdog

I think the existing tutorial is fine. It shows how to make the device have the same set of random numbers after it is reset.

dpgeorge avatar May 17 '19 04:05 dpgeorge