Golang获取随机float64(正数)数据与随机int数据(可以是负数)
package utils import ( "fmt" "github.com/shopspring/decimal" "math" "math/rand" "testing" "time" ) func init() { // 初始化rand模块的Seed,要不然所有的随机值会一样~ rand.Seed(time.Now().UnixNano()) } // 获取随机float64 保留2位小数 Notice 不四舍五入 func GetRandomFloat64WHW(min, max float64) float64 { min, max = math.Abs(min), math.Abs(max) min, max = GetMinFloat64WHW(min, max), GetMaxFloat64WHW(min, max) // 到这里确保 max>=min 并且二者一定是正数 ret := GetMinFloat64WHW(min, max) + rand.Float64()*(max-min) // 不四舍五入 ret, _ = decimal.NewFromFloat(ret).RoundFloor(2).Float64() if ret > max { ret = max } if ret < min { ret = min } return ret } func GetMaxFloat64WHW(min, max float64) float64 { if min >= max { return min } return max } func GetMinFloat64WHW(min, max float64) float64 { if min <= max { return min } return max } func TestRandFloat64222(t *testing.T) { fmt.Println(GetRandomFloat64WHW(1,2)) fmt.Println(GetRandomFloat64(-1.2233,2.123)) fmt.Println(GetRandomFloat64(3.2,2)) fmt.Println(GetRandomFloat64(0.01,0.1)) fmt.Println(GetRandomFloat64(-0.01,0.1)) }
~~~
// 随机数 // 生成min与max之间的整数(包含) func GenRandomInt(min, max int) int { if min == max { return min } // 为了保险取两个值之间大的那个作为max randNum := rand.Intn(GetMaxInt(min, max)-min) + min return randNum } func GetMaxInt(min, max int) int { if max >= min { return max } return min } func GetMinInt(min, max int) int { if min <= max { return min } return max }
~~~