code: func (ka *KnownAddress) chance() float64 {
  	now := time.Now()
  	lastAttempt := now.Sub(ka.lastattempt)
  
  	if lastAttempt < 0 {
  		lastAttempt = 0
  	}
  
  	c := 1.0
  
  	// Very recent attempts are less likely to be retried.
  	if lastAttempt < 10*time.Minute {
  		c *= 0.01
  	}
  
  	// Failed attempts deprioritise.
  	for i := ka.attempts; i > 0; i-- {
  		c /= 1.5
  	}
  
  	return c
  }
docs: // chance returns the selection probability for a known address.  The priority
  // depends upon how recently the address has been seen, how recently it was last
  // attempted and how often attempts to connect to it have failed.