지난번에 난수를 이용해 특정 분포를 따르는 자료를 생성하는 방법을 살펴봤는데...
이때 성에 차지 않는게 하나 있다.

분포가 왜 주어진 비율과 딱 맞아 떨어지지 않냐는거다.
원인은 간단하다.
난수이기 때문이다.
(분포가 딱 맞아 떨어지는 것과 적합하다는 것은 의미가 다르다.)
이에 난수 100 개를 또 생성한다.
그리고 생성된 난수에 대해 순위를 매긴다.
그러면 순위는 1 에서 100 사이의 정수를 갖게 된다.
그래서 계산을 위해 1 만큼을 순위에서 빼준다.
그리고 100 으로 나눈다.
i2 셀
=RANK(H2,$H$2:$H$101)-1
j2 셀
=INDEX($A$2:$A$5,MATCH(I2/100,$C$2:$C$5,1))
이렇게 생성된 순위를 가지고 배치를 하면...
동일값의 난수가 생성되는 극히 매우 낮은 경우가 있긴하나,
제시된 비율과 생성된 분포는 같다.
사족인데...
지난번 작업에서 복잡한 수식도 없어보이는데 처리 시간이 생각 보다 오래 걸린거 같아
시스템 정보를 봤더니만...
메모리 하나를 인식을 못한다.
512MB 밖에 안돼는데 거기서도 반쪽이 날아간 것이다.
접촉불량인가? -_-a
들고다닌적도 거의 없는데...
칩을 대충 꽂고 지난 작업을 다시 수행하니 50,000 개 생성/처리가 몇초만에 끝난다.
메모리 영향이 엄청났다는 것.
이에 순위에서도 50,000 개 생성/처리를 해봤더니 약 13분 가량 소요됐다.
역시나 순위 계산은 수식은 간단해도 시간이 걸린다.
여기서 호기심이 발동해 순위를 Rank 함수가 아닌 Countif 함수로 처리해봤다.
50,000 개 생성/처리되는데 약 40분, 파일 크기는 7M에 육박했다.
Countif 함수를 이용하는게 좀더 가벼울거라 예상해봤는데 그게 아닌가 보다.



댓글을 달아 주세요