언어
(클릭하여 변경)
한국인
*자동 번역
통화
(클릭하여 변경)
$
공유:
Facebook에서 이 페이지 공유 Twitter에서 이 페이지 공유
29 Jan 2023 18:26:44 UTC

복권 확인

당첨 번호는 어떻게 생성되나요?

Lottocryptos는 당첨 번호 생성의 투명성을 달성하기 위해 복권에 "Provably Fair" 시스템을 사용합니다.

우승 난수 생성의 시드(seed)는 네 부분으로 구성됩니다.

  • A - 최대 128자리의 난수입니다. 매주 추첨이 시작되면 생성되며 암호화폐마다 다릅니다.
  • B - 마지막 플레이어의 트랜잭션 ID입니다. 복권에서 마지막으로 확인된 플레이어의 거래 ID입니다.
  • C - 복권에서 판매된 복권의 총 수.
  • D - 복권에서 확인된 플레이어의 수입니다.
  • 당첨 번호의 랜덤 생성을 위한 시드 를 얻기 위해서는 다음과 같은 과정을 따릅니다.

    각 부분은 SHA512로 암호화되어 연결됩니다. 그런 다음 SHA512로 다시 암호화되고 해당 문자가 해당 ASCII 값으로 변환됩니다. 난수 생성에 사용되는 시드가 이 값입니다.

    모든 검사가 적절한 것으로 간주될 수 있도록 사용자에게 난수를 얻는 데 사용되는 소스 코드와 임의성 테스트를 수행하는 도구를 제공합니다.

    소스 코드
    파일: classes/class.Random.php
    PHP 버전: 8.0.18
    마지막 업데이트: 2022-구월-17 10:57:44 UTC
    크기: 3231 바이트
    <?php
    function Random_number($length){
        
    $result '';
        
    //Generate random number.    
        
    for($i=0;$i<$length;$i++){
            
    $result $result.random_int(0,9);
        }
        
        
    //Remove leading zeros.    
        
    $result ltrim($result,'0');
        if(
    $result == ''){
            
    $result 0;
        }
    return 
    $result;    
    }

    function 
    Random_string_to_int($string){
        
    $result '';
        
    //Count characters.
        
    $length strlen($string);
        
        
    //Ord ->Convert a character to its ASCII decimal value.
        
    for($i=0;$i<$length;$i++){
            
    $result $result.ord($string[$i]); 
        }
    return 
    $result;    
    }

    function 
    Random_int_to_string($number){
        
    //Convert integer to string.    
        
    $result number_format($number,0,'','');
    return 
    $result;    
    }

    function 
    Random_hash($data,$algo){
        
    //Hash string with an algo.    
        
    $result hash($algo,$data);
    return 
    $result;    
    }

    function 
    Random_basic_seed(){
        
    $result Random_number(128);
    return 
    $result;
    }

    function 
    Random_gmp_winner_number($basic_seed,$player_seed,$n_tickets,$n_players){
        
    $result '';
        
    //Convert integer to string.
        
    $n_tickets Random_int_to_string($n_tickets);
        
        
    //Hash all the parts
        
    $basic_seed Random_hash($basic_seed,'sha512');
        
    $player_seed Random_hash($player_seed,'sha512');
        
    $n_tickets_seed Random_hash($n_tickets,'sha512');
        
    $n_players_seed Random_hash($n_players,'sha512');        
        
        
    //Join all parts and hash
        
    $seed Random_hash($basic_seed.$player_seed.$n_tickets_seed.$n_players_seed,'sha512');
        
        
    //Convert letters to numbers.
        
    $seed Random_string_to_int($seed);
        
        
    //Insert seed into number generator. Only integers.
        
    gmp_random_seed($seed);
        
        
    //Generate random number.
        
    $value gmp_random_range(1,$n_tickets);
        
        
    //Convert GMP integer to string.    
        
    $result gmp_strval($value);
    return 
    $result;
    }
    /*
    //WINNER NUMBER
    $basic_seed = Random_basic_seed();
    $player_seed = 'f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16';//Transaction ID
    $n_players = 1;
    $n_tickets = 100000000;
    echo Random_gmp_winner_number($basic_seed,$player_seed,$n_tickets,$n_players);

    //RANDOMNESS TEST (Can be CPU intensive with more cycles / rounds)
    $cycles = 1;
    $runs = 1000;
    $tickets = 5;
    $player_seed = 'f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16';//Transaction ID
    $players = 5;

    $n_runs = 0;
    $probs = 0;
    $results = array();
    $results_prob = array();
    for($i=0;$i<$cycles;$i++){
        for($k=0;$k<$runs;$k++){
            $basic_seed = Random_basic_seed();
            $number = Random_gmp_winner_number($basic_seed,$player_seed,$tickets,$players);
            if(array_key_exists($number,$results)){
                $results[$number]++;
            }
            else{
                $results[$number] = 1;
            }
        }
    }
    ksort($results);?>

    <table>
        <thead>
            <td>Number</td>
            <td>Number of Times</td>
            <td>Probability</td>            
        </thead><?php 
    foreach($results as $key => $value){ 
        $n_runs += $value;
        $x = number_format((($value * 100)/($cycles * $runs)),3);
        $probs += $x;?>
        <tr>
            <td><?php echo $key;?></td>
            <td><?php echo $value;?></td>
            <td><?php echo $x.' %';?></td>
        </tr><?php 
    } ?>
        <tfoot>
            <td>Total Numbers: <?php echo count($results);?></td>
            <td>Total Runs: <?php echo $n_runs;?></td>
            <td>Total Prob: <?php echo $probs.' %';?></td>            
        <tfoot>
    </table><?php 
    */
    ?>
    무작위성 테스트
    2023-1월-29 18:26:43 UTC
    가치 실행 횟수 개연성
    1 186 18.600 %
    2 211 21.100 %
    3 183 18.300 %
    4 209 20.900 %
    5 211 21.100 %
    5 1000 100 %