Проверка лотереи
Ravencoin (RVN)
Неделя: 13-Маршировать-2022
Победитель
Игрок
57c2cd5fce70d9eff679128e0842f6ed9523b4a1ec6ce72784743a729919cefe
Выигрышный номер
2.349.028.477
Билеты сыграны
1.405.500.000 - 3.017.845.678
Прогнозируемый выигрышный номер
Прогнозируемый выигрышный номер меняется каждый раз, когда новый игрок добавляется и проверяется.
2.349.028.477
Базовое семя
Случайное число до 128 цифр, генерируемое в начале каждой недели для каждой лотереи.
13854762082789457049900661561082958528974732839965766702950386893914019417140684556759324302318904316386591857151698491771176699
ID транзакции
Идентификатор транзакции последнего проверенного игрока.
Билеты
Количество проданных лотерейных билетов.
3.017.845.678
Игроки
Количество проверенных игроков.
4
Как генерируется выигрышный номер?
Lottocryptos использует систему "Provably Fair" для своих лотерей, чтобы достичь прозрачности в генерации выигрышных номеров.
Семя генерации выигрышного случайного числа состоит из четырех частей:
Для получения семян для случайной генерации выигрышного номера выполняется следующий процесс.
Каждая часть шифруется с помощью SHA512 и конкатенируется. Затем она снова шифруется с помощью SHA512, а ее символы преобразуются в соответствующее значение ASCII. Семя, используемое для генерации случайного числа, является этим значением.
Чтобы иметь возможность провести все проверки, которые считаются необходимыми, мы предоставляем пользователям исходный код, используемый для получения случайного числа, и инструменты для проведения теста на случайность.
Исходный код
Файл: classes/class.Random.php
PHP-версия: 8.2.4
Последнее обновление: 17-Сентябрь-2022 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
*/
?>
Проверка случайности
29-Маршировать-2024 12:50:30 UTC
|
||
---|---|---|
Ценности | Количество запусков | Вероятность |
1 | 195 | 19.500 % |
2 | 181 | 18.100 % |
3 | 215 | 21.500 % |
4 | 208 | 20.800 % |
5 | 201 | 20.100 % | 5 | 1000 | 100 % |