공평한 아미다쿠지와 몇번 가로선을 그리면 좋을까?
아미다 복권의 공정성
아미다 복권은 공정하지 않은 것으로 유명하지만,
가능한 한 "공평하게"하는 방법은? 라는 것으로 조사.
파라미터로서 만지는 것은 세로선수, 가로선수 정도입니까.
이번에는 수평선의 수로 아미다쿠지가 어떻게 변화하는지 본다.
아미다 복권의 정의
아미다쿠지의 내용 부분을 정의한다.
가로선의 수(N_vertical)분, 요소를 랜덤으로 바꾸는 것만.
실시하고 싶은 시뮬레이션의 특성상, 초기치를 이하와 같이 설정.
GL_start = np.arange(N_vertical) #あみだくじ初期値
#print(GL_start) #縦線8本の場合
#[1,2,3,4,5,6,7,8]
def GhostLeg(GL_start, N_horizontal):
for i in range(N_horizontal):
attention = np.random.randint(N_vertical) #横線位置
if attention == 0:
GL_start[0], GL_start[1] = GL_start[1], GL_start[0]
elif attention == N_vertical-1:
GL_start[-1], GL_start[-2] = GL_start[-2], GL_start[-1]
else:
which = np.random.choice([-1, 1]) #左右どちらと交換するか選択
GL_start[attention], GL_start[attention + which] = GL_start[attention + which], GL_start[attention]
return GL_start
시뮬레이션
이번에는 세로선 8개로 고정해, “가로선 몇개 있으면 공평한 거야?”를 시뮬레이션해 본다.
어디의 스타트 지점을 선택해도, 이동 거리(스타트 지점으로부터 얼마나 멀리 떨어진 지점에 골 했는지)가 같아지면, 일단 공평이라고 말할 수 있을지도 모른다.
따라서 수평선의 수를 늘려 각 이동 거리의 신뢰 구간을 취한다.
각 횡선수마다 10회 시행의 이동거리 평균을 100회 내고 신뢰구간을 낸다.
그래프 표시 부분은 할애.
N_vertical = 8 #縦線の数
Ntrial = 10 #試行回数
Nsample = 100 #標本数
const = 0
for i in range(len(N_horizontal)): #横線の数を変化
for sampleIte in range(Nsample):
for trialIte in range(Ntrial):
GL_temp = copy.deepcopy(GL_start) #あみだくじ初期化
GL_end = GhostLeg(GL_temp, N_horizontal[const])
#移動距離の平均
for moveIte in range(1, N_vertical+1):
tmp = list(GL_end).index(moveIte)
GL_goal[moveIte-1] = tmp + 1 #ゴール地点がどこか(引数+1)
movements_mean = np.mean(abs(GL_goal - GL_start))
GL_result[sampleIte, i] = movements_mean
const = const + 1
결과
어리석은 프로그램이었지만 그 결과는 일단 나왔습니다.
가로축은 단순한 가로선수가 아니고, 8명이 한 번씩 선을 그리는 동작을 몇 주었는지를 나타냅니다.
이것을 보면, 약 16주 이후로 이동 거리가 2.50~2.75로 수렴합니다.
8명의 아미다쿠지를 공평하게 하려면 최소 16주, 128개의 가로선을 그립니다.
음, 많이!
그러나 선택한 곳에서 2, 3 개 떨어진 곳에만 갈 수 있기 때문에
당에서 가까운 막대기를 선택하는 것이 역시 무난했습니다.
Reference
이 문제에 관하여(공평한 아미다쿠지와 몇번 가로선을 그리면 좋을까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Nakubaru/items/ab63a6c8621ac5129b54
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
아미다쿠지의 내용 부분을 정의한다.
가로선의 수(N_vertical)분, 요소를 랜덤으로 바꾸는 것만.
실시하고 싶은 시뮬레이션의 특성상, 초기치를 이하와 같이 설정.
GL_start = np.arange(N_vertical) #あみだくじ初期値
#print(GL_start) #縦線8本の場合
#[1,2,3,4,5,6,7,8]
def GhostLeg(GL_start, N_horizontal):
for i in range(N_horizontal):
attention = np.random.randint(N_vertical) #横線位置
if attention == 0:
GL_start[0], GL_start[1] = GL_start[1], GL_start[0]
elif attention == N_vertical-1:
GL_start[-1], GL_start[-2] = GL_start[-2], GL_start[-1]
else:
which = np.random.choice([-1, 1]) #左右どちらと交換するか選択
GL_start[attention], GL_start[attention + which] = GL_start[attention + which], GL_start[attention]
return GL_start
시뮬레이션
이번에는 세로선 8개로 고정해, “가로선 몇개 있으면 공평한 거야?”를 시뮬레이션해 본다.
어디의 스타트 지점을 선택해도, 이동 거리(스타트 지점으로부터 얼마나 멀리 떨어진 지점에 골 했는지)가 같아지면, 일단 공평이라고 말할 수 있을지도 모른다.
따라서 수평선의 수를 늘려 각 이동 거리의 신뢰 구간을 취한다.
각 횡선수마다 10회 시행의 이동거리 평균을 100회 내고 신뢰구간을 낸다.
그래프 표시 부분은 할애.
N_vertical = 8 #縦線の数
Ntrial = 10 #試行回数
Nsample = 100 #標本数
const = 0
for i in range(len(N_horizontal)): #横線の数を変化
for sampleIte in range(Nsample):
for trialIte in range(Ntrial):
GL_temp = copy.deepcopy(GL_start) #あみだくじ初期化
GL_end = GhostLeg(GL_temp, N_horizontal[const])
#移動距離の平均
for moveIte in range(1, N_vertical+1):
tmp = list(GL_end).index(moveIte)
GL_goal[moveIte-1] = tmp + 1 #ゴール地点がどこか(引数+1)
movements_mean = np.mean(abs(GL_goal - GL_start))
GL_result[sampleIte, i] = movements_mean
const = const + 1
결과
어리석은 프로그램이었지만 그 결과는 일단 나왔습니다.
가로축은 단순한 가로선수가 아니고, 8명이 한 번씩 선을 그리는 동작을 몇 주었는지를 나타냅니다.
이것을 보면, 약 16주 이후로 이동 거리가 2.50~2.75로 수렴합니다.
8명의 아미다쿠지를 공평하게 하려면 최소 16주, 128개의 가로선을 그립니다.
음, 많이!
그러나 선택한 곳에서 2, 3 개 떨어진 곳에만 갈 수 있기 때문에
당에서 가까운 막대기를 선택하는 것이 역시 무난했습니다.
Reference
이 문제에 관하여(공평한 아미다쿠지와 몇번 가로선을 그리면 좋을까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Nakubaru/items/ab63a6c8621ac5129b54
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
N_vertical = 8 #縦線の数
Ntrial = 10 #試行回数
Nsample = 100 #標本数
const = 0
for i in range(len(N_horizontal)): #横線の数を変化
for sampleIte in range(Nsample):
for trialIte in range(Ntrial):
GL_temp = copy.deepcopy(GL_start) #あみだくじ初期化
GL_end = GhostLeg(GL_temp, N_horizontal[const])
#移動距離の平均
for moveIte in range(1, N_vertical+1):
tmp = list(GL_end).index(moveIte)
GL_goal[moveIte-1] = tmp + 1 #ゴール地点がどこか(引数+1)
movements_mean = np.mean(abs(GL_goal - GL_start))
GL_result[sampleIte, i] = movements_mean
const = const + 1
어리석은 프로그램이었지만 그 결과는 일단 나왔습니다.
가로축은 단순한 가로선수가 아니고, 8명이 한 번씩 선을 그리는 동작을 몇 주었는지를 나타냅니다.
이것을 보면, 약 16주 이후로 이동 거리가 2.50~2.75로 수렴합니다.
8명의 아미다쿠지를 공평하게 하려면 최소 16주, 128개의 가로선을 그립니다.
음, 많이!
그러나 선택한 곳에서 2, 3 개 떨어진 곳에만 갈 수 있기 때문에
당에서 가까운 막대기를 선택하는 것이 역시 무난했습니다.
Reference
이 문제에 관하여(공평한 아미다쿠지와 몇번 가로선을 그리면 좋을까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Nakubaru/items/ab63a6c8621ac5129b54텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)