@ -1784,12 +1784,28 @@ namespace cryptonote
return f ;
return f ;
}
}
//-----------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------
static double probability ( unsigned int blocks , unsigned int expected )
static double probability 1 ( unsigned int blocks , unsigned int expected )
{
{
// https://www.umass.edu/wsp/resources/poisson/#computing
// https://www.umass.edu/wsp/resources/poisson/#computing
return pow ( expected , blocks ) / ( factorial ( blocks ) * exp ( expected ) ) ;
return pow ( expected , blocks ) / ( factorial ( blocks ) * exp ( expected ) ) ;
}
}
//-----------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------
static double probability ( unsigned int blocks , unsigned int expected )
{
double p = 0.0 ;
if ( blocks < = expected )
{
for ( unsigned int b = 0 ; b < = blocks ; + + b )
p + = probability1 ( b , expected ) ;
}
else if ( blocks > expected )
{
for ( unsigned int b = blocks ; b < = expected * 3 /* close enough */ ; + + b )
p + = probability1 ( b , expected ) ;
}
return p ;
}
//-----------------------------------------------------------------------------------------------
bool core : : check_block_rate ( )
bool core : : check_block_rate ( )
{
{
if ( m_offline | | m_target_blockchain_height > get_current_blockchain_height ( ) )
if ( m_offline | | m_target_blockchain_height > get_current_blockchain_height ( ) )