안녕하세요~
제가 이런 식으로 성명과 응모횟수 파일을 가지고 있는데,
응모횟수가 많을수록 당첨확률이 높은 추첨기를 만들고자 합니다!
추첨은 성함 앞에 =RAND() 넣고
=VLOOKUP(LARGE($A$2:$A$6,1),$A$2:$B$6,2,0) 으로
빨간 숫자만 변경하여 10명을 추첨하려고 했는데,
이런 식으로 하니 응모횟수 반영이 어렵네요..
제 생각에는 B열의 값을 C열의 값만큼 반복해서 입력해주는 함수를 써서
그걸 범위로 VLOOKUP하면 될 것 같은데 이걸 잘 모르겠네요..
대상자가 거의 2만 건이라..
혹시 방법 아시는 고수님들 의견 부탁드립니다!
아니면 더 좋은 추첨 방법 있으면 알려주세요~
네.. 혹시 B열의 값을 C열의 값만큼 반복해서 입력해주는 함수는 어떤 걸 쓰면 되는지 알려주실 수 있을까요..?
안녕하세요~
이렇게 해보세요.
F9를 누르시면 됩니다.
[키(가중추첨)]
[순위]
=-LN(RAND())/B2 자연로그 쓰는 이유가 있는지요??
=RAND()/B4로 해도 될 것 같은데요
나누기 방법은 최고네요...
안녕하세요~
이 수식이 의도하는 바는
"응모횟수가 많을수록 당첨확률이 높은 추첨기를 만들고자 합니다"
는 위 질문 의도에 맞추기 위해서
응모횟수가 많을수록 당첨확률이 높아지는 추첨기를 구현하려고 합니다.
가중치가 선형 비율로 정확히 반영되는 지수분포 기반의 경쟁 구조를 사용해야 하는데,
이를 위해 RAND()로 생성한 균등난수를 −LN(RAND()) 변환을 통해 지수분포 난수로 바꾸고, 그 값을 응모횟수로 나누어 최소값 경쟁 방식으로 당첨자를 결정하도록 해야 합니다.
=RAND()/B4는 단순히 값의 범위에 가중치를 반영해서 수학적 확률의 선형성인
“최솟값 경쟁에서 승리 확률이 정확히 B4 비율”이 되도록 보장하지는 않는데,
반면 -LN(RAND())/B4는 지수분포 경쟁 성질 때문에 그 비율이 정확히 성립하게 되고
“최솟값 경쟁”에서 가중치가 선형(비율)로 반영되는 깔끔한 수학이 성립할 수 있습니다.
예를 들면,
RAND()
0.9
0.7
0.5
0.2
0.05
위 난수분포은 균등분할입니다.
이를 자연로그함수로 변환하면
-LN(RAND())
0.10
0.36
0.69
1.61
3.00
RAND() 값이 0에 가까워질수록 −LN(RAND()) 값은 급격히 증가하며, 이를 통해 평균 1의 지수분포 난수가 생성됩니다.
이렇게 변환된 값을 응모횟수로 나누어
키=−ln(RAND())/응모횟수
로 정의하면, 최소값을 선택하는 경쟁 구조에서 응모횟수가 클수록 더 작은 키를 가질 가능성이 높아집니다.


그 결과, 응모횟수가 많을수록 당첨확률이 비례적으로 증가하는 구조가 자연스럽게 형성됩니다.
자세한 설명 감사합니다.
쉬는 날인데도 답변을 쉬지 않으시는군요 b^^)