然后你又会发现跟上面还是一样的,再运行也还是一样的。于是你猜想,跟种子没有关系啊?不是,因为这个时候的rand是默认的。看源码就明白,原来rand.Int()下的随机数都是以1为种子。rand相当于默认的全局。

于是就有了一下代码:

package main
import (
	"fmt"
	"math/rand"
)
func main() {
	rnd := rand.New(rand.NewSource(10))
	for i := 0; i < 10; i++ {
		fmt.Println(rnd.Int())
	}
}


终于不一样了,于是你终于领悟了吧。如果想要每次运行不一样的话,那就改成“活种”。代码如下:
package main
import (
	"fmt"
	"math/rand"
	"time"
)
func main() {
	rnd := rand.New(rand.NewSource(time.Now().UnixNano()))
	for i := 0; i < 10; i++ {
		fmt.Println(rnd.Int())
	}
}

3.六位数验证码

package main
import (
	"fmt"
	"math/rand"
	"time"
)
func main() {
	rnd := rand.New(rand.NewSource(time.Now().UnixNano()))
	vcode := fmt.Sprintf("%06v", rnd.Int31n(1000000))
	fmt.Println(vcode)
}