Golang隨機數生成


 

需求:10以內隨機生成2個幸運數字

package main

import (
	"fmt"
	"math/rand"
)

func main() {
	fmt.Println("My first lucky number is", rand.Intn(10))
	fmt.Println("My senond lucky number is", rand.Intn(10))
}

 

輸入如圖:

My first lucky number is 1
My senond lucky number is 7

  

在本環境中,不論編譯運行多少次,都是這個輸出。

為什么沒有產生隨機的效果呢?

此程序的運行環境是固定的,因此 rand.Intn 總是會返回相同的數字。 (要得到不同的數字,需為生成器提供不同的種子數)

添加

package main

import (
	"fmt"
	"math/rand"
	"time"
)

func main() {
	rand.Seed(time.Now().Unix())
	fmt.Println("My first lucky number is", rand.Intn(10))
	fmt.Println("My senond lucky number is", rand.Intn(10))
}

 

效果:(多次編譯運行效果不同)

My first lucky number is 6
My senond lucky number is 8  

 

rand.Seed(time.Now().UnixNano())作用

rand.Intn

獲取隨機數,不加隨機種子,每次遍歷獲取都是重復的一些隨機數據


rand.Seed(time.Now().UnixNano())

設置隨機數種子,加上這行代碼,可以保證每次隨機都是隨機的

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM