평균을 중심으로 좌우 대칭인 종 모양의 분포
데에터가 평균 주변에 집중
평균에서 멀어질수록 빈도가 급격히 줄어듦
히스토그램과의 관계 : 데이터가 정규분포를 따르면, 히스토그램은 중앙이 가장 높고, 양쪽으로 대칭인 모양을 나타냄
히스토그램의 x축bin width : 각 구간의 폭
코드에서는 15개의 구간을 하드코딩해둠
첫 번째 구간은 (0.9700000000, 0.9735000000)로 정의되어 있어, 이 구간에서는 0.97 이상 0.9735 이하의 값이 무작위로 생성됩니다.
마지막 구간은 (1.0257142858, 1.0300000000)로 정의되어, 1.03에 가까운 값이 생성됩니다.
즉, 모든 구간은 0.97부터 1.03 사이를 커버합니다.
각 구간에서 하나의 무작위 값이 생성되고, np.random.permutation(arr)를 통해 이 15개 값의 순서가 랜덤하게 섞입니다.
값들이 섞이더라도, 개별 값은 여전히 0.97에서 1.03 사이에 머무릅니다.
예정가격 산출:
플레이어들이 각자 2개의 카드를 뽑고, 모든 플레이어의 추첨 결과를 모은 후, 빈도수가 높은 4개 구간의 번호에 해당하는 후보 값들을 선택하여 그 산술평균을 계산합니다.
이 평균값도 후보 값들이 속한 0.97에서 1.03 범위 내에 있게 됩니다.
히스토그램 함수의 설정:
plt.hist(data, bins=120, range=(0.97, 1.03), ...)에서 x축의 범위가 0.97부터 1.03으로 고정되어 있습니다.
이는 위의 시뮬레이션 결과(예정가격)가 항상 이 범위 내에 존재하기 때문에, 전체 데이터 분포를 제대로 시각화하기 위해 선택된 범위입니다.
왜 이 범위를 선택했는가?
코드 설계에서 예비가격 후보가 ±3% 범위(즉, 0.97 ~ 1.03) 내에서 생성되도록 하였으므로, 그 결과로 산출되는 예정가격 역시 이 범위 내에 있어야 합니다.
따라서 히스토그램의 x축을 이 범위로 지정하면, 모든 데이터가 포함되고 분포 모양을 명확하게 확인할 수 있습니다.
데이터 생성:
15개의 구간이 0.97부터 1.03 사이로 미리 정해져 있습니다.
각 구간에서 무작위 예비가격(율)이 생성되어 후보 배열을 형성합니다.
후보들은 랜덤하게 섞이지만, 값의 범위는 여전히 0.97에서 1.03 사이입니다.
예정가격 계산:
플레이어들의 카드 추첨 결과를 바탕으로, 가장 많이 뽑힌 4개 구간의 후보값을 골라 평균을 냅니다.
최종 예정가격은 이 평균값이며, 역시 0.97에서 1.03 사이의 값을 가집니다.
히스토그램 시각화:
히스토그램 함수는 이 예정가격 데이터를 0.97부터 1.03 범위로 설정하여, 데이터의 분포와 빈도를 시각적으로 표현합니다.
즉, 시뮬레이션에서 사용된 전체 범위(0.97 ~ 1.03)가 히스토그램의 x축 범위가 됩니다.
예를 들어, 평균이 1.0이고 일정한 표준편차가 있는 정규분포에서 무작위로 값을 뽑는다면, 이론적으로 1보다 큰 값도 충분히 발생할 수 있습니다.
혹은 1을 기준으로 ±x% 변동을 허용하는 알고리즘이라면, 1.02, 1.03 같은 값이 나올 수도 있습니다.
=> 현재 projected_price에서 type : ±3%, ±2% 구간으로 되어있기 때문에 범위가 1을 넘어갈 수 있음
“1”이 어떤 특정 기준(예: 100% 또는 목표치)일 뿐, 실제 측정값(가격, 비율, 점수 등)이 기준 이상으로 올라갈 수도 있습니다.
Matplotlib 등에서 히스토그램을 그릴 때, 기본적으로 데이터의 최솟값과 최댓값을 포함하는 범위로 x축을 설정합니다.
일부 값이 1을 초과한다면, 자동으로 1보다 큰 구간(bin)까지 표시합니다.
bid_simulator라는 이름으로 가상환경 만들기py -3.13 -m venv bid_simulatorpip install -r requirements.txt 입력 후 가상환경에 필요한 버전으로 다운받기#requirements.txt 내부 코드
contourpy==1.3.1
cycler==0.12.1
fonttools==4.56.0
kiwisolver==1.4.8
matplotlib==3.10.0
numpy==2.2.3
packaging==24.2
pandas==2.2.3
pillow==11.1.0
pyparsing==3.2.1
python-dateutil==2.9.0.post0
pytz==2025.1
scipy==1.15.2
seaborn==0.13.2
six==1.17.0
tqdm==4.67.1
tzdata==2025.1
pip list 입력 -> 다운 받았는지 확인하기Python:Select Interpreter
. .\bid_simulator\Scripts\activate.ps1 코드 입력