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 包的使用。這兩個示例都給出了預期的隨機輸出。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP