Gaussian RNG with min,mid,max constrains

func gaussianRandMMM(min, mid, max float64) float64 {
	stdDev := (max - mid) / 3.0
	for {
		val := rand.NormFloat64()*stdDev + mid
		if val < min || val > max {
			continue
		}
		return val
	}
}