복권 확인
Ravencoin (RVN)
주: 2022-구월-18
우승자
플레이어
a0d6e3cf627db319385057236499b21e8c0bca0d7edb829036558e5f6d8a8677
당첨 번호
690,069,787
플레이한 티켓
350,000,001 - 891,271,211
예상 당첨 번호
예상 당첨 번호는 새 플레이어가 추가되고 확인될 때마다 변경됩니다.
690,069,787
기본 씨앗
각 복권에 대해 매주 초에 생성되는 최대 128자리의 임의 번호.
91422895822540278090277999518938613065560829285199037774189643889930993302724712452196459832480435003511401896577376768471473113
티켓
판매된 복권의 수입니다.
2,891,271,211
선수
확인된 플레이어의 수입니다.
18
당첨 번호는 어떻게 생성되나요?
Lottocryptos는 당첨 번호 생성의 투명성을 달성하기 위해 복권에 "Provably Fair" 시스템을 사용합니다.
우승 난수 생성의 시드(seed)는 네 부분으로 구성됩니다.
당첨 번호의 랜덤 생성을 위한 시드 를 얻기 위해서는 다음과 같은 과정을 따릅니다.
각 부분은 SHA512로 암호화되어 연결됩니다. 그런 다음 SHA512로 다시 암호화되고 해당 문자가 해당 ASCII 값으로 변환됩니다. 난수 생성에 사용되는 시드가 이 값입니다.
모든 검사가 적절한 것으로 간주될 수 있도록 사용자에게 난수를 얻는 데 사용되는 소스 코드와 임의성 테스트를 수행하는 도구를 제공합니다.
소스 코드
파일: classes/class.Random.php
PHP 버전: 8.1.27
마지막 업데이트: 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
*/
?>
무작위성 테스트
2024-4월-23 21:06:16 UTC
|
||
---|---|---|
가치 | 실행 횟수 | 개연성 |
1 | 220 | 22.000 % |
2 | 203 | 20.300 % |
3 | 212 | 21.200 % |
4 | 177 | 17.700 % |
5 | 188 | 18.800 % | 5 | 1000 | 100 % |