순위에 따른 당첨 확률에 대한 알고리즘이요...

i09000의 이미지

이번에 어떤 사이트를 제작중인데요..

순위에 따른 랜덤값을 조정을 해야 하더덩요..

순위가 고정이면 고정값으로 딱딱 입력 했으면 좋겠는데요...

그게 아니고 순위의 갯수도 매일 달라지고

그렇습니다.

예를 들어

1위인 사람이 당첨 확률이 20%
2위인 사람이 당첨 확률이 16%
3위인 사람이 당첨 확률이 12.8%
.
.
.

이런식으로요 마지막에 확률을 모두 합쳤을때는 100%가 나와야 합니다.

그리고 순위가 다른 두개를 집어 내야 하는것이죠...

이것으로 제가 여러가지 방법으로 해봤지만... 도져히 결론이 안나네염...

이 계산법을 알아 내기 위해서 2달째 머리 싸매고 있습니다...

도와 주세요~

eseo의 이미지

매번 추첨대상자의 수가 달라지는 경우란 말씀이신가요?
간단하게는 이정도로 표현할 수 있겠네요.

당첨확률 = ( [대상자] - [개개인의 순위] + 1 ) / [대상자 관련수]
Pn = ( N - n + 1) / SIGMA(1, N)

즉, 100 명중에 3등인 사람이 당첨될 확률은
P3 = ( N - 3 + 1) / SIGMA(1, 100)
    = 98 / 5050
    = 0.019 ...

P1~P100 의 합이 "1" 이 나오게 됩니다.

좀 더 간단한 예로 추첨대상자를 두명으로 잡으면, 각각
P1 = 2/3 
P2 = 1/3
의 당첨확률을 갖겠네요.

---
배려하는 마음을 갖자.

i09000의 이미지

eseo wrote:
매번 추첨대상자의 수가 달라지는 경우란 말씀이신가요?
간단하게는 이정도로 표현할 수 있겠네요.

당첨확률 = ( [대상자] - [개개인의 순위] + 1 ) / [대상자 관련수]
Pn = ( N - n + 1) / SIGMA(1, N)

즉, 100 명중에 3등인 사람이 당첨될 확률은
P3 = ( N - 3 + 1) / SIGMA(1, 100)
    = 98 / 5050
    = 0.019 ...

P1~P100 의 합이 "1" 이 나오게 됩니다.

좀 더 간단한 예로 추첨대상자를 두명으로 잡으면, 각각
P1 = 2/3 
P2 = 1/3
의 당첨확률을 갖겠네요.

이렇게 하면 100개 이상 돼었을때 확률이 너무나 차이가 않나는 데요...

저는 1위가 약 20%
2위는 약 16%정도로

차이가 확연히 나타나다가

순위가 아래로 갈수록 확률은 줄어드는 식으로

했으면 해서요....

감사합니다.

eseo의 이미지

Quote:
이렇게 하면 100개 이상 돼었을때 확률이 너무나 차이가 않나는 데요...

저는 1위가 약 20%
2위는 약 16%정도로

차이가 확연히 나타나다가

순위가 아래로 갈수록 확률은 줄어드는 식으로

했으면 해서요....

방법은 여러가지가 있습니다.
제가 위에 올린 글은 가능성을 보인 것 뿐이구요.

1. 1위부터 특정등수까지 가산점을 주는 방법
2. 1위부터 꼴찌까지 특정 분포에 따라 차이를 주는 방법
등등...

(용어가 있을터인데, 몰라서 그냥 쓰려니 말이 어렵네요)

즉 1번의 방법이라면,
1등에게는 20%
2등에게는 16%
의 가산점을 미리 준다고 할 때,

P1 = { ( N - n +1 ) / SIGMA(1, N) } * 0.64 + 0.2
P2 = { ( N - n +1 ) / SIGMA(1, N) } * 0.64 + 0.16
3등 이후론,
Pn = { ( N - n + 1) / SIGMA(1, N) } * 0.64

모두 더하면 1이 나오겠죠?

2번의 방법을 하더라도, 확률이 사람수에 따라 크게 변하지 않으려면 이렇게 적당한 seed 값을 주어야 할 것 같은데요.
또 재귀함수를 이용하면 쉬울것 같기도 하고...
머리 아프네요 :lol:

저는 여기까지입니다.
좋은 성과 얻기 바랍니다.

---
배려하는 마음을 갖자.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.