欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Go語言中rand(隨機數(shù))包的使用

 更新時間:2022年08月16日 09:47:42   作者:Hann Yang  
在Golang中,有兩個包提供了rand,分別為math/rand和crypto/rand對應兩種應用場景。math/rand包實現(xiàn)了偽隨機數(shù)生成器。也就是生成 整形和浮點型;crypto/rand包實現(xiàn)了用于加解密的更安全的隨機數(shù)生成器。本文就來和大家詳細講講math/rand的使用

包"math/rand"

隨機數(shù)生成器,可以生成 整型或浮點型 的偽隨機數(shù)。

隨機數(shù)種子

不同的種子生成不同的隨機數(shù),無種子編譯后運行的結果是定值。

通常以時鐘作為參數(shù)初始化,rand.Seed(time.Now().UnixNano())。

隨機函數(shù)

rand.Int()

返回一個隨機整數(shù)

package main
 
import (
    "fmt"
    "math/rand"
    "time"
)
 
func main() {
    nums := make([]int, 3)
    rand.Seed(time.Now().UnixNano())
    for j := 0; j < 10; j++ {
        for i := 0; i < 3; i++ {
            nums[i] = rand.Int()
            fmt.Print(nums[i])
            fmt.Print("\t")
        }
        fmt.Println()
    }
}

輸出樣例:

8547983782177664082 3052552994446827557 8765581018699603124

5361649810688880538 7247555699230090626 6921521756094709862

7061225496098313961 4043787731930393944 4881510333544611431

2742623498123161832 8826061491064266771 7540769746514898360

1640562288017497602 7737908637884326151 927535944994878966

7393177581525888978 6511469144479537097 5004275440415177087

88816382525065439     4249346871495670764 8192005441386526629

5523554829668683712 69312977258692669     6584352354533757392

3124007232705319196 5635727296343069158 4284023996891098234

3861142140259007378 4879978992907007455 473741157600402359

rand.Intn(n)

返回0~n間不包括n的非負整數(shù)

package main
 
import (
    "fmt"
    "math/rand"
    "time"
)
 
func main() {
    nums := make([]int, 8)
    rand.Seed(time.Now().UnixNano())
    for j := 0; j < 10; j++ {
        for i := 0; i < 8; i++ {
            nums[i] = rand.Intn(100)
            fmt.Print(nums[i])
            fmt.Print("\t")

輸出樣例: 

40    63    3    47    76    78    21    44    
43    40    12    87    94    90    97    68    
0    47    14    71    42    52    20    72    
86    57    78    65    53    77    75    70    
76    26    63    40    57    75    77    82    
86    4    46    25    2    67    46    0    
53    64    70    37    59    41    47    63    
80    3    85    42    1    47    31    7    
2    6    2    40    33    49    30    32    
68    90    74    51    40    57    92    97

注:   rand.Intn(100) 與 rand.Int()%100 效果相近。

實例

紅球 1-33 選擇6個 不能重復;藍球 1-16 選擇1個;藍球和紅球可以重復

package main
 
import (
    "fmt"
    "math/rand"
    "time"
)
 
func main() {
    red := make([]int, 6)
    rand.Seed(time.Now().UnixNano())
 
    for i := 0; i < len(red); i++ {
        t := rand.Intn(33) + 1
        for j := 0; j < i; j++ {
            if t == red[j] {
                t = rand.Intn(33) + 1
                j--
            }
        }
        red[i] = t
    }
    fmt.Println("紅球:", red, "\n藍球:", rand.Intn(16)+1)
}

輸出:

紅球: [25 28 19 26 33 14]
藍球: 7

其他隨機函數(shù)

按類型隨機類

func (r *Rand) Int31() int32
func (r *Rand) Int63() int64
func (r *Rand) Uint32() uint32
func (r *Rand) Float32() float32  // 返回一個取值范圍在[0.0, 1.0)的偽隨機float32值
func (r *Rand) Float64() float64  // 返回一個取值范圍在[0.0, 1.0)的偽隨機float64值

指定隨機范圍類

func (r *Rand) Int31n(n int32) int32
func (r *Rand) Int63n(n int64) int64

偽隨機排列的切片

返回一個有n個元素的,[0,n)范圍內(nèi)整數(shù)的偽隨機排列的切片

fmt.Println(rand.Perm(10)) // [3 7 0 1 9 2 4 5 6 8]

生成標準正態(tài)分布

返回一個服從標準正態(tài)分布(標準差=1,期望=0)

取值范圍在[-math.MaxFloat64, +math.MaxFloat64]的float64值。

fmt.Println(rand.NormFloat64())
//生成不同的正態(tài)分布值
fmt.Println(rand.NormFloat64() * 標準差 + 期望)

生成標準指數(shù)分布

返回一個服從標準指數(shù)分布(率參數(shù)=1,率參數(shù)是期望的倒數(shù))

取值范圍在(0, +math.MaxFloat64]的float64值。

fmt.Println(rand.ExpFloat64())
//生成不同的指數(shù)分布值
fmt.Println(rand.ExpFloat64() / 率參數(shù))

到此這篇關于詳解Go語言中rand(隨機數(shù))包的使用的文章就介紹到這了,更多相關Go語言 rand包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Go字典使用詳解

    Go字典使用詳解

    今天和大家一起學習Go語言的字典。Go語言的字典又稱為map,一種使用廣泛的數(shù)據(jù)結構。它是擁有key/value對元素的「無序集合」,而且在集合中key必須是唯一的
    2022-11-11
  • Linux環(huán)境下編譯并運行go項目的全過程

    Linux環(huán)境下編譯并運行go項目的全過程

    Go語言是Google的開源編程語言,廣泛應用于云計算、分布式系統(tǒng)開發(fā)等領域,在Linux上也有大量的應用場景,這篇文章主要給大家介紹了關于Linux環(huán)境下編譯并運行go項目的相關資料,需要的朋友可以參考下
    2023-11-11
  • Go cobra庫使用教程

    Go cobra庫使用教程

    cobra既是一個用于創(chuàng)建強大現(xiàn)代CLI應用程序的庫,也是一個生成應用程序和命令文件的程序。cobra被用在很多go語言的項目中,比如 Kubernetes、Docker、Istio、ETCD、Hugo、Github CLI等等
    2022-12-12
  • go語言獲取系統(tǒng)盤符的方法

    go語言獲取系統(tǒng)盤符的方法

    這篇文章主要介紹了go語言獲取系統(tǒng)盤符的方法,涉及Go語言調(diào)用winapi獲取系統(tǒng)硬件信息的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • Golang實現(xiàn)KV存儲引擎實例探究

    Golang實現(xiàn)KV存儲引擎實例探究

    這篇文章主要為大家介紹了Golang實現(xiàn)KV存儲引擎實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • 舉例講解Go語言中函數(shù)的閉包使用

    舉例講解Go語言中函數(shù)的閉包使用

    這篇文章主要介紹了Go語言中函數(shù)的閉包使用示例,函數(shù)閉包closure是編程語言中十分重要的特性,需要的朋友可以參考下
    2016-03-03
  • Golang中互斥鎖和讀寫互斥鎖原理及示例代碼

    Golang中互斥鎖和讀寫互斥鎖原理及示例代碼

    在Golang中,互斥鎖是一種基本的同步原語,用于實現(xiàn)對共享資源的互斥訪問,讀寫互斥鎖是一種特殊類型的互斥鎖,它允許多個協(xié)程同時讀取某個共享資源,本文將通過過示例代碼詳細介紹Golang中互斥鎖和讀寫互斥鎖,需要的朋友可以參考下
    2023-05-05
  • go下載指定版本的依賴包圖文詳解

    go下載指定版本的依賴包圖文詳解

    由于依賴包的每個版本都有一個唯一的目錄,所以在多項目場景中需要使用同一個依賴包的多版本時才不會產(chǎn)生沖突,下面這篇文章主要給大家介紹了關于go下載指定版本的依賴包的相關資料,需要的朋友可以參考下
    2023-04-04
  • Golang創(chuàng)建構造函數(shù)的方法超詳細講解

    Golang創(chuàng)建構造函數(shù)的方法超詳細講解

    構造器一般面向對象語言的典型特性,用于初始化變量。Go語言沒有任何具體構造器,但我們能使用該特性去初始化變量。本文介紹不同類型構造器的差異及其應用場景
    2023-01-01
  • Golang并發(fā)讀取文件數(shù)據(jù)并寫入數(shù)據(jù)庫的項目實踐

    Golang并發(fā)讀取文件數(shù)據(jù)并寫入數(shù)據(jù)庫的項目實踐

    本文主要介紹了Golang并發(fā)讀取文件數(shù)據(jù)并寫入數(shù)據(jù)庫的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06

最新評論