Golang生成隨機數案例實戰


                 Golang生成隨機數案例實戰

                                 作者:尹正傑

版權聲明:原創作品,謝絕轉載!否則將追究法律責任。 

 

 

 

一.生成1個[0-99]的隨機數案例

package main

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

func main() {

    /*
        rand.Seed:
            還函數是用來創建隨機數的種子,如果不執行該步驟創建的隨機數是一樣的,因為默認Go會使用一個固定常量值來作為隨機種子。

        time.Now().UnixNano():
            當前操作系統時間的毫秒值
    */
    rand.Seed(time.Now().UnixNano())

    /*
        生成一個隨機數
    */
    a := rand.Intn(100) //實際隨機生成的數字范圍[0,99]
    fmt.Printf("a的類型為[%T],a的隨機數值為:[%d]\n", a, a)
}

 

二.生成10個[200-500]的隨機數案例

package main

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

func main() {

    /*
        rand.Seed:
            還函數是用來創建隨機數的種子,如果不執行該步驟創建的隨機數是一樣的,因為默認Go會使用一個固定常量值來作為隨機種子。

        time.Now().UnixNano():
            當前操作系統時間的毫秒值
    */
    rand.Seed(time.Now().UnixNano())

    /*
        生成十個隨機數[200-500]
    */
    for index := 1; index <= 10; index++ {
        random_number := rand.Intn(301) + 200
        fmt.Printf("第[%d]個隨機數的值為:[%d]\n", index, random_number)
    }
}

 

三.燒腦版生成隨機數[需要指針知識]

package main

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

func getRandomNumber(p *int, start_pos int, stop_pos int) {
    /*
        rand.Seed:
            還函數是用來創建隨機數的種子,如果不執行該步驟創建的隨機數是一樣的,因為默認Go會使用一個固定常量值來作為隨機種子。

        time.Now().UnixNano():
            當前操作系統時間的毫秒值
    */
    rand.Seed(time.Now().UnixNano())

    random_number := rand.Intn(stop_pos-start_pos) + start_pos

    /*
        將指針作為參數傳遞,形參間接修改實參的值
    */
    *p = random_number
}

func main() {

    /*
        定義要生成隨機值的范圍
    */
    var (
        start_pos int = 200
        stop_pos  int = 500
        num       int
    )

    for index := 1; index <= 10; index++ {
        /*
            每次循環時讓CPU休息1毫秒,因為CPU執行太快,可能10此循環幾乎在同一納秒執行完畢。

            我暫時想到的解決方案有兩種:
                (1)以形參的方式傳入隨機種子值
                (2)讓主線程在不同的時間段調用函數

            上面兩種思路均可,我為了省事情就直接讓主線程休眠1毫秒,即采用了第二種解決方案。
        */
        time.Sleep(1)

        getRandomNumber(&num, start_pos, stop_pos)
        fmt.Printf("第[%d]個隨機數的值為:[%d]\n", index, num)
    }

}

 


免責聲明!

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



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