예제 #1
0
 NormalRandomVariable::
 operator double( void )
    const throw()
 {
    assert( initialized_ );
    return
       mean_ +
       std_dev_
       * sqrt( -2.0 * log(uniform_random_0e_1i()) )
       * cos( 2.0 * M_PI * uniform_random_0e_1i());
 }
 // ----------------------------------------------------------------------
 bool
     RandomDropTransmissionModel::
     drop_message( TransmissionModel::MessageInfo&)
     throw() 
 {
     return uniform_random_0e_1i() <= probability_;  
 }
예제 #3
0
    // ----------------------------------------------------------------------
    bool
        LinkProbabilityCommunicationModel::
        can_communicate_uni( const Node& u, const Node& v )
        const throw()
    {
        LinkProbabilityMap::const_iterator it = probabilities_.find( u.label() );
        if(u==v) return true;

        if( it == probabilities_.end() )
            return false;
        else 
		{
			std::map<std::string, double>::const_iterator it2 = it->second.find(v.label());
			if( it2 == it->second.end() ) 
				return false;
			else 
				return (it2->second >= uniform_random_0e_1i());
		}
    }