'경우의수'에 해당되는 글 1건


경우의 수 계산이 어려워서, 프로그래밍으로 했다.


100개 slots에 무작위로 아무 숫자에나 사람들이 슈팅을 한다고 했을 때,

빨간 색은 사람이 0명인 slot 개수

파란 색은 사람이 1명인 slot 개수

사람이 10배 이상으로 모이면, 그 slot은 포기해야 할 듯.

import matplotlib.pyplot as plot

import random



n_slots = 100


n_people_range = range(0, 3000)


def random_histogram(n_slots, n_people):

slots = range(0, n_slots)

slot_histogram = [0 for i in slots]

#print slot_histogram

for i in range(0, n_people):

slot = random.randint(0, n_slots - 1)

slot_histogram[slot] = slot_histogram[slot] + 1

return slots, slot_histogram


people_x_range = range(n_people_range[-1] + 1)

n_0_hist = [0 for i in people_x_range]

n_1_hist = [0 for i in people_x_range]


for i_n_people in n_people_range:

#print i_n_people

slots, slot_histogram = random_histogram(n_slots, i_n_people)

n_0_slots = 0

n_1_slots = 0

for n_people_each_slot in slot_histogram:

if (n_people_each_slot == 0):

n_0_slots = n_0_slots + 1

if (n_people_each_slot == 1):

n_1_slots = n_1_slots + 1


n_0_hist[i_n_people] = n_0_slots if n_0_slots > 0 else -5

n_1_hist[i_n_people] = n_1_slots if n_1_slots > 0 else -5

print i_n_people, n_0_slots, n_1_slots


plot.scatter(people_x_range, n_0_hist, c='red', lw=0, alpha=0.5)

plot.scatter(people_x_range, n_1_hist, c='blue', lw=0, alpha=0.5)


plot.show()


한 번 더 계산해봐도 거의 비슷한 그래프


n_slots = 1000

#50000 people --> 1000 < 7000 < 10000

n_people_range = range(0, 10000)

으로 많이 계산하고,

def blur_histogram(histogram):

result = [0 for i in range(len(histogram))]

for i in range(len(histogram)):

blur_wing = 30

if (i - blur_wing > 0 and i + blur_wing < len(histogram)):

for j in range(i - blur_wing, i + blur_wing):

around_i = histogram[i - blur_wing : i + blur_wing]

result[i] = reduce(lambda x, y: x + y, around_i) / len(around_i)

으로 blur했더니, 예쁜 그래프가 됐다.














블로그 이미지

언제나19

기본에 충실하는 19식 재테크. 교과서 중심으로 공부했어요.

,