随机整数
fmt.Println(rand.Intn(100))
47
rand.Intn方法可获得[0,n)区间内的随机整数。
随机浮点数
fmt.Println(rand.Float64())
0.4377141871869802
rand.Float64方法可获得[0.0,1.0)区间内的随机浮点数。
指定范围的随机浮点数
fmt.Println((rand.Float64() * 5) + 5)
5.328185096087381
该方法可获得[5.0,10.0)区间内的随机浮点数。
随机数种子
s := rand.NewSource(time.Now().UnixNano())
r := rand.New(s)
fmt.Println(r.Intn(100))
13
注意,使用相同的随机数种子会生成相同的随机数序列,如下所示:
s1 := rand.NewSource(42)
r1 := rand.New(s1)
fmt.Println(r1.Intn(100), ",", r1.Intn(100), ",", r1.Intn(100), ",", r1.Intn(100))
s2 := rand.NewSource(42)
r2 := rand.New(s2)
fmt.Println(r2.Intn(100), ",", r2.Intn(100), ",", r2.Intn(100), ",", r2.Intn(100))
5 , 87 , 68 , 50
5 , 87 , 68 , 50
数字解析
f, _ := strconv.ParseFloat("1.234", 64)
fmt.Println(f)
1.234
i, _ := strconv.ParseInt("123", 0, 64)
fmt.Println(i)
123
d, _ := strconv.ParseInt("0x1c8", 0, 64)
fmt.Println(d)
456
u, _ := strconv.ParseUint("789", 0, 64)
fmt.Println(u)
789
k, _ := strconv.Atoi("135")
fmt.Println(k)
135
_, e := strconv.Atoi("wat")
fmt.Println(e)
strconv.Atoi: parsing “wat”: invalid syntax
本文介绍了Go语言中生成随机数的方法,包括rand.Intn用于获取[0,n)区间内的整数,rand.Float64获取[0.0,1.0)的浮点数,以及如何通过rand.NewSource设定随机数种子来确保序列可重复。同时,文章还展示了如何使用strconv包解析和转换不同格式的数字,如ParseFloat、ParseInt和ParseUint。

被折叠的 条评论
为什么被折叠?



