Random walk¶
Last ned filen uke_13_oppgave_8.py
. Du skal tilpasse filen for
å løse de følgende oppgavene.
Filen simulerer en «Random walk» (tilfeldig tur) i to dimensjoner.
Vi begynner på (0,0) og tar 100 tilfeldige skritt opp, ned,
til venstre eller til høyre. Turen er lagret i numpy array steps
.
Du trenger ikke å endre den delen der vi genererer steps:
###################################
# generate one random walk #
###################################
# a list of 4 directions 0,1,2,3
dirs = np.random.randint(0, 4, N_steps)
# a 2D list of steps, empty for now
steps = np.empty((N_steps, 2))
# fill the list of steps according to direction
steps[dirs == 0] = [0, 1] # 0 - right
steps[dirs == 1] = [0, -1] # 1 - left
steps[dirs == 2] = [1, 0] # 2 - up
steps[dirs == 3] = [-1, 0] # 3 - down
###################################
# use cumsum to sum up the individual steps to get current position
steps = steps.cumsum(axis=0)
###################################
Hver linje i steps inneholder den nåværende x- og y-posisjon, slik at vi enkelt kan plotte turen:
Oppgaver¶
Send inn den endelige koden som fullfører alle deler som
uke_13_oppgave_8.py
(a) Tegn 1000000 (én million) skritt i steden for 100.
- (b) Lag ein ny int-variabel
repeats
som angir hvor mange ganger vi skal simulere hele turen. Skriv en for-løkke som repeterer simulasjonen frem tilplt.plot()
repeats
ganger. Eksempel for repeats=5, med 1M skritt.
Legg inn plot-overskriften og endre aksene slik at (0,0) er i midten og alle turer er helt synlig. Overskriften og akse-grensene skal tilpasses når vi endrer
N_steps
og/ellerrepeats
.For hver tur, finn maksimal avstand fra sentrum (0,0). Avstand blir regnet ut som \(d=\sqrt{x^2+y^2}\)
Tips: du kan jobbe med hele numpy-arrayene
xs
ogys
for å få avstandeneds
, og så ta maksimum, uten løkke. Lagre resulterende plott for repeats=5 somuke_13_oppg_10.png
Legg inn maksimal avstand i en «legend»:
(Tallene i bildet kan avvike. Det kommer an på om du bruker
xs
ogys
før eller etter du har tatt utskip
stegene.)