code: func (rs *randStruct) randomInit(password []byte, length int) {
  	// Generate binary hash from raw text string
  	var nr, add, nr2, tmp uint32
  	nr = 1345345333
  	add = 7
  	nr2 = 0x12345671
  
  	for i := 0; i < length; i++ {
  		pswChar := password[i]
  		if pswChar == ' ' || pswChar == '\t' {
  			continue
  		}
  		tmp = uint32(pswChar)
  		nr ^= (((nr & 63) + add) * tmp) + (nr << 8)
  		nr2 += (nr2 << 8) ^ nr
  		add += tmp
  	}
  
  	seed1 := nr & ((uint32(1) << 31) - uint32(1))
  	seed2 := nr2 & ((uint32(1) << 31) - uint32(1))
  
  	//  New (MySQL 3.21+) random generation structure initialization
  	rs.maxValue = 0x3FFFFFFF
  	rs.maxValueDbl = float64(rs.maxValue)
  	rs.seed1 = seed1 % rs.maxValue
  	rs.seed2 = seed2 % rs.maxValue
  }
docs: // randomInit random generation structure initialization