실시간 난수 생성 현황
Drand 네트워크의 현재 라운드 및 다음 난수 생성 시간
현재 시간
현재 라운드 시간
현재 라운드 번호
현재 라운드 결과값
다음 라운드 시간
다음 라운드 번호
조작 불가능한 추첨기
추첨하고 공유하세요!

어떻게 조작이 불가능 한가요?

공개 난수 소스 사용

당첨 결과는 전 세계적으로 신뢰받는 난수 생성 네트워크인Drand 에서 생성된 난수를 기반으로 합니다. Drand 는 누구나 접근 가능하며, 30초마다 새로운 난수를 공개합니다. 이 난수는 사전에 예측하거나 조작할 수 없습니다.

drand 네트워크 자세히 보기 →

추첨 알고리즘 공개

추첨에 사용되는 알고리즘은 완전히 공개되어 있어, 누구나 해당 난수와 알고리즘을 이용해 결과를 독립적으로 검증할 수 있습니다. 이로 인해 결과 조작이나 은폐는 사실상 불가능합니다.

추첨 알고리즘

/**
 * drand 난수와 LCG를 사용해 중복 없이 여러 명을 추첨하는 함수
 * @param randomness drand에서 받은 64자리 16진수 문자열
 * @param items 후보 항목 배열
 * @param count 추첨할 개수
 * @returns 중복 없는 랜덤 추첨 결과 배열
 */
export function drawWinnersWithLCG(randomness: string, items: string[], count: number): string[] {
  if (count > items.length) throw new Error("추첨 개수가 항목 수보다 많습니다.");

  // drand randomness를 32비트 정수 시드로 변환
  let seed = parseInt(randomness.slice(0, 8), 16);

  const arr = [...items];
  const winners: string[] = [];

  for (let i = 0; i < count; i++) {
    // LCG로 새로운 난수 생성
    seed = (seed * 1664525 + 1013904223) % 0x100000000;
    // 난수로 인덱스 선택
    const idx = seed % arr.length;
    winners.push(arr[idx]);
    arr.splice(idx, 1); // 중복 방지
  }
  return winners;
}

이 투명한 알고리즘으로 누구나 결과를 독립적으로 검증할 수 있습니다