파이썬 랜덤워크에서의 평균거리

조회수 445회
import numpy as np
import math

print("몇 회 움직이겠습니까?>> ")
t = int(input())
print("몇 번(n) 시뮬레이션 하겠습니까?>> ")
n = int(input())
RW = list()

for j in range(n): #n번 시뮬레이션
    d = 0
    arr = np.random.randint(2, size= t) # +1, -1 을 정하기 위한 난수(0,1) 발생을 t번 실행

    for i in arr: #위에서 나온 난수를 통해 +1, -1을 반복하여 위치d 에 저장
        if i==0:
            d -= 1
        else:
            d += 1
    RW.append(d) #한번 시뮬레이션 했을 때 위치 d를 RW리스트에 저장하여 총 n개의 시뮬레이션 결과를 저장 


#원점으로부터 평균 거리 구하기

summ = 0
for i in RW:                    #t회 이동하는 시뮬레이션을 n 번 했을 때 평균적인 거리(dis) 
    summ += math.sqrt(RW[i]**2)
dis = summ/len(RW) 

print("거리의 평균: ", dis, "거리의 이론적 평균: ", math.sqrt(t)) 

위와 같이 코드를 짜보았습니다. 랜덤워크에 대해 배웠는데 거리의 이론적 평균은 시행횟수t의 루트값이라고 했습니다.

따라서 이를 시뮬레이션하기 위해 위와 같은 코드를 짜보았는데 시뮬레이션 횟수(n)이 많아질수록 이론적 평균과 값이 멀어졌습니다. 어느 부분에서 제가 잘못 된건지 여쭙고 싶습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)