1.2.24 가우스 난수. 다음의 박스-뮬러(Box-Muller) 공식을 이용하면 정규 분포에 따르는 난수를 생성할 수 있다.
w = sin(2𝜋v)(-2 ln u)1/2
이때 u와 v는 math.random()
함수로 생성한 0과 1 사이의 실수이다. 표준 가우스 난수를 출력하는 프로그램을 작성하라.
1.2.25 정렬 확인. 명령 줄 인수로 세 개의 실수 x
, y
, z
를 입력받아 이 숫자들이 오름차순(x < y < z)
이나 내림차순(x > y > z)
으로 정렬되어 있으면 True
, 아니면 False
를 출력하는 프로그램을 작성하라.
1.2.26 요일. 날짜를 입력받아 그날의 요일을 출력하는 프로그램을 작성하라. 프로그램은 명령 줄 인수로 m
(달), d
(날), y
(년도)를 입력받고 0에서 6사이의 숫자(0은 일요일, 1은 월요일, ...)를 출력해야 한다. 그레고리력에서는 다음의 공식을 사용할 수 있다.
y0 = y - (14 - m) / 12
x = y0 + y0/4 - y0/100 + y0/400
m0 = m + 12 × ((14 - m) / 12) - 2
d0 = (d + x + (31×m0)/12) % 7
예를 들어 2000년 2월 14일의 경우
y0 = 2000 - 1 = 1999
x = 1999 + 1999/4 - 1999/100 + 1999/400 = 2483
m0 = 2 + 12×1 - 2 = 12
d0 = (14 + 2483 + (31×12)/12) % 7 = 2500 % 7 = 1
이 되어 월요일임을 알 수 있다.