code: func (nDB *NetworkDB) mRandomNodes(m int, nodes []string) []string {
  	n := len(nodes)
  	mNodes := make([]string, 0, m)
  OUTER:
  	// Probe up to 3*n times, with large n this is not necessary
  	// since k << n, but with small n we want search to be
  	// exhaustive
  	for i := 0; i < 3*n && len(mNodes) < m; i++ {
  		// Get random node
  		idx := randomOffset(n)
  		node := nodes[idx]
  
  		if node == nDB.config.NodeID {
  			continue
  		}
  
  		// Check if we have this node already
  		for j := 0; j < len(mNodes); j++ {
  			if node == mNodes[j] {
  				continue OUTER
  			}
  		}
  
  		// Append the node
  		mNodes = append(mNodes, node)
  	}
  
  	return mNodes
  }
docs: // mRandomNodes is used to select up to m random nodes. It is possible
  // that less than m nodes are returned.