본문으로 건너뛰기
Luckverse

공정성의 원리

LUCKVERSE의 모든 결과는 먼저 신중하게 뽑고, 그다음에 애니메이션으로 보여 줍니다. 그 방법을 정확히 설명합니다.

난수의 출처

모든 도구는 최신 브라우저에 내장된 암호학적으로 안전한 난수 생성기 crypto.getRandomValues()를 씁니다. 브라우저가 암호화 키를 만들 때 쓰는 것과 같은 출처이며, 이전 결과로 다음 결과를 예측할 수 없습니다.

치우침 없는 정수

흔히 쓰는 지름길, 즉 난수를 범위로 나눈 나머지를 쓰는 방법은 작은 값이 조금 더 자주 나옵니다. LUCKVERSE는 대신 기각 샘플링을 씁니다. 치우침을 만드는 값은 버리고 다시 뽑습니다. 그래서 범위 안의 모든 숫자가 정확히 같은 확률로 나옵니다.

가중치는 정확합니다

가중치 돌림판에서 가중치 3인 항목은 3을 전체 가중치로 나눈 확률로 뽑힙니다. 전체에 대해 치우침 없는 정수를 한 번 뽑는 방식입니다. 각 칸의 크기도 같은 가중치로 계산하므로, 그림이 실제 확률을 보여 줍니다.

애니메이션은 추첨 결과를 따릅니다

당첨자는 돌림판이 움직이기 전에 정해집니다. 돌림판은 여러 바퀴 돈 뒤 천천히 멈추며, 당첨 칸의 가장자리를 피해 그 안에 섭니다. 멈추면 바늘 아래 칸이 뽑힌 당첨자와 같은지 확인합니다. 자동 테스트는 빌드할 때마다 이를 2만 번 반복합니다.

공정한 사다리

아무렇게나 그은 사다리 타기는 대개 공정하지 않습니다. 가로줄이 몇 개뿐이면 출발한 자리 근처에서 끝나기 쉽기 때문입니다. LUCKVERSE는 결과를 먼저 균등하게 뽑은 뒤, 정확히 그 결과로 이어지는 사다리를 만듭니다. 사람과 결과를 짝짓는 모든 경우가 같은 확률이며, 모든 사다리는 각 줄이 서로 다른 결과에 닿는지 검사합니다.

검증 가능한 추첨

경품 추첨이라면 이름 뽑기에서 누구나 나중에 확인할 수 있는 추첨을 할 수 있습니다.

  1. 비밀 256비트 시드를 만듭니다. 시드와 정확한 목록의 해시를 합쳐 SHA-256으로 만든 지문을 보여 주며, 이것을 공개하면 됩니다.
  2. 원하면 지문을 올린 뒤 참여자들이 공개 솔트를 정합니다.
  3. 당첨자는 시드와 솔트로 만든 결정적 SHA-256 스트림과 같은 치우침 없는 샘플링으로 계산합니다.
  4. 시드를 공개합니다. 누구나 검증 페이지에서 지문과 당첨자를 다시 계산해 아무것도 바뀌지 않았음을 확인할 수 있습니다.

저희가 하지 않는 일

LUCKVERSE에는 베팅도, 돈도, 자체 상품도 없습니다. 결과는 서버에 저장하지 않으며, 목록과 기록은 브라우저 안에만 남습니다.