Go語言程式演示rand包的使用


在Go語言中,rand包用於生成隨機數/字元。首先,它使用當前時間進行種子初始化,以便每次都能獲得不同的隨機輸出,然後執行任何操作。

語法

rand.Seed(value)

**Rand.Seed()** 函式用於生成隨機數。它接受使用者輸入作為引數,該引數是生成隨機數的上限。

func Now() Time

**Now()** 函式定義在 time 包中。此函式生成當前本地時間。要使用此函式,我們必須首先在程式中匯入 time 包。

func (t Time) UnixNano() int64

**UnixNano()** 函式定義在 time 包中。此函式用於獲取自 1970 年 1 月 1 日(UTC)以來經過的秒數。它返回的最終結果是 64 位整數型別。

rand.Intn(n)

**Intn()** 函式定義在 math/rand 包中。它用於在 [0, n] 區間內生成隨機數,其中 n 是使用者提供的數字。如果提供的數字小於 0,則該函式會丟擲錯誤。

func Strings(src []string) []string

**strings** 函式定義在 sort 包中。此函式接受我們要排序的字串格式陣列,並透過對該陣列進行排序返回結果。

func make ([] type, size, capacity)

Go 語言中的 **make** 函式用於建立陣列/對映,它接受要建立的變數的型別、大小和容量作為引數。

func range(variable)

**range** 函式用於迭代任何資料型別。要使用它,我們首先必須編寫 range 關鍵字,然後是我們要迭代的資料型別,結果迴圈將迭代到變數的最後一個元素。

演算法

  • **步驟 1** - 在程式中匯入所需的包

  • **步驟 2** - 建立一個 main 函式

  • **步驟 3** - 在 main 函式中使用當前時間為隨機數生成器設定種子,以便每次獲得不同的輸出

  • **步驟 4** - 使用 rand 包中的函式執行不同的操作

  • **步驟 5** - 使用 fmt 包中的 Println 函式在控制檯上列印輸出

示例 1

在此示例中,隨機數生成器將使用當前時間進行種子初始化以獲得新的隨機數。然後,在前兩個例子中將生成隨機整數和浮點數,然後列印隨機排列。

package main

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


func main() {
   rand.Seed(time.Now().UnixNano())
   random_integer := rand.Intn(50)
   fmt.Println("Random integer:", random_integer)
   random_floatnum := rand.Float64()
   fmt.Println("Random float:", random_floatnum)  	
   random_permutation := rand.Perm(20)
   fmt.Println("Random permutation:", random_permutation) 
}

輸出

Random integer: 0
Random float: 0.5038452930984003
Random permutation: [2 3 1 6 8 16 17 12 7 10 13 11 4 5 18 14 9 0 19 15]

示例 2

在此示例中,將進行種子初始化,然後將使用 Go 語言中的內建函式 make 建立一個名為 password_value 的變數,用於儲存從字元集中生成的隨機密碼。

package main

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

const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" 

func main() {	 
   rand.Seed(time.Now().UnixNano())	
   password_value := make([]byte, 6)
   for i := range password_value {
      password_value[i] = charset[rand.Intn(len(charset))]  
   }
   fmt.Println("Random password:", string(password_value)) 
}

輸出

Random password: 2sdGzJ

結論

我們編譯並執行了兩個示例程式,演示了 rand 包的使用。在第一個示例中,我們透過生成隨機整數、浮點數和排列來執行不同的操作。在第二個示例中,生成了一個隨機密碼以展示 rand 包的使用。這兩個示例都給出了預期的隨機輸出。

更新於:2023年4月4日

瀏覽量:273

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.