[Math] How to make random
in Math on Math, Probability
GAN을 학습하면서 랜덤에 관한 내용이 많이 나오므로 한번 공부하고 가겠다.
seed: 난수 생성 초기값 부여
난수 생성마다 값이 달라지는 것이 아니라 , 누가 , 언제 하든지 간에 똑같은 난수 생성을 원한다면 (즉 재현가능성) seed번호를 지정해주면 된다.
np.random.seed(seed = 100) # seed를 세팅함
np.random.normal(size = 5)
Out[5]: array([-1.74976547, 0.3426804 , 1.1530358 , -0.25243604, 0.98132079])
# exactly the same with the above random numbers
In [6]: np.random.seed(seed=100)
In [7]: np.random.normal(size=5) # 위의 결과랑 똑같음
Out[7]: array([-1.74976547, 0.3426804 , 1.1530358 , -0.25243604, 0.98132079])
size:샘플 생성 개수 및 array shape설정
다차원의 array 형태로 무작위 샘플을 생성할 수 있다는 것도 Numpy randim 모듈의 장점이다.
np.random.normal(size =2)
Out[8]: array([ 0.51421884, 0.22117967])
In [9]: np.random.normal(size=(2, 3))
Out[9]:
array([[-1.07004333, -0.18949583, 0.25500144],
[-0.45802699, 0.43516349, -0.58359505]])
1-1 이항분포로 부터 무작위 표본 추출
n =1 상황의 개수 p는 각 상황의 확률 size 는 반복
In [11]: np.random.binomial(n=1, p=0.5, size=20)
Out[11]: array([0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1])
In [12]: sum(np.random.binomial(n=1, p=0.5, size=100) == 1)/100
Out[12]: 0.46999999999999997
정규분포로부터 무작위 표본 추출
평균이 0 , 표준편차가 3인 정규분포로 부터 난수 100개를 생성해 보고 히스토그램을 그려서 분포를 bin 구간별 빈도(frequency)와 표준화한 비율(normalized percentage)로 삺펴본다
# (2) 연속형 확률분포 (continuous probability distribution)
# (2-1) 정규분포(normal distribution)로부터 난수 생성
# Draw random samples from a normal (Gaussian) distribution
# np.random.normal(loc=0.0, scale=1.0, size=None)
# mu : Mean (“centre”) of the distribution
# sigma : Standard deviation (spread or “width”) of the distribution
# size : Output shape
In [26]: np.random.seed(100)
In [27]: mu, sigma = 0.0, 3.0
In [28]: rand_norm = np.random.normal(mu, sigma, size=100)
In [29]: rand_norm
Out[29]:
array([-5.24929642, 1.02804121, 3.45910741, -0.75730811, 2.94396236,
1.54265652, 0.66353901, -3.21012999, -0.56848749, 0.76500433,
-1.37408096, 1.30549046, -1.75078515, 2.45054122, 2.01816242,
-0.31323343, -1.59384113, 3.08919806, -1.31440687, -3.35495474,
4.85694498, 4.62481552, -0.75563742, -2.52730721, 0.55355607,
2.8112466 , 2.19300103, 4.08466838, -0.97871418, 0.16702804,
0.66719883, -4.32965099, -2.26905692, 2.44936203, 2.25133428,
-1.36784078, 3.5688668 , -5.07185048, -4.06919715, -3.69730354,
-1.63331749, -2.00451521, 0.02194369, -1.83881621, 3.89924422,
-5.19928687, -2.9499303 , 1.07252326, -4.84073551, 4.4121416 ,
-3.56405279, -1.64923858, -2.82013848, -2.48379709, 0.3265904 ,
1.52342877, -2.58668204, 3.74840923, -0.23883374, -2.66919444,
-2.64539517, 0.05591685, 0.71353387, 0.04064565, -4.9065882 ,
-3.13262963, 1.83911665, 2.20861564, 3.08076432, -4.29657183,
-5.5235649 , 1.09827968, -0.99533141, -2.06765393, 6.10382268,
-1.65214324, 2.25135999, -3.92097702, 1.74172001, -3.31356928,
2.07036441, 2.0606702 , -4.70006259, 2.71492236, 2.3364672 ,
1.28469861, 0.32661597, 0.0848509 , -1.73647747, -3.5983536 ,
-5.11785602, 1.10749187, 5.62972028, -1.13071005, 5.49580825,
0.0090523 , -0.2280704 , 0.01187278, -0.55504233, -7.46145461])
이상.