随机数生成

2018-11-21  本文已影响0人  吃猫的鱼0

因为float计算的时候回有误差,所以建议直接使用int然后再转为float

// 获取Float32随机数
// min 最小值
// max 最小值
// precision 精度 精确小数点后几位
func RandFloat32(min ,max,precision float32) float32 {
    precisionint:=10/precision/10//1/precision除出来的不是10的整数倍尴尬
    min_precision_int:=int(min*precisionint)
    max_precision_int:=int(max*precisionint)
    timens := int64(time.Now().Nanosecond())
    rand.Seed(timens)
    num_precision_float32:=float32(rand.Intn(max_precision_int-min_precision_int)+min_precision_int)
    return num_precision_float32/(precisionint)
}
// 获取float64随机数
// min 最小值
// max 最小值
// precision 精度 精确小数点后几位
func RandFloat64(min ,max,precision float64) float64 {
    precisionint:=1/precision
    min_precisionint_int:=int(min*precisionint)
    max_precisionint_int:=int(max*precisionint)
    timens := int64(time.Now().Nanosecond())
    rand.Seed(timens)
    num_precisionint_float64:=float64(rand.Intn(max_precisionint_int-min_precisionint_int)+min_precisionint_int)
    return num_precisionint_float64/precisionint
}
// 获取Int随机数
// min 最小值
// max 最小值
func RandInt(min ,max int) int {
    timens := int64(time.Now().Nanosecond())
    rand.Seed(timens)
    return rand.Intn(max-min)+min
}
// 获取Int32随机数
// min 最小值
// max 最小值
func RandInt32(min ,max int32) int32 {
    timens := int64(time.Now().Nanosecond())
    rand.Seed(timens)
    return rand.Int31n(max-min)+min
}
// 获取Int64随机数
// min 最小值
// max 最小值
func RandInt64(min ,max int64) int64 {
    timens := int64(time.Now().Nanosecond())
    rand.Seed(timens)
    return rand.Int63n(max-min)+min
}
上一篇 下一篇

猜你喜欢

热点阅读