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

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

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

包"math/rand"

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

隨機(jī)數(shù)種子

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

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

隨機(jī)函數(shù)

rand.Int()

返回一個(gè)隨機(jī)整數(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的非負(fù)整數(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 效果相近。

實(shí)例

紅球 1-33 選擇6個(gè) 不能重復(fù);藍(lán)球 1-16 選擇1個(gè);藍(lán)球和紅球可以重復(fù)

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藍(lán)球:", rand.Intn(16)+1)
}

輸出:

紅球: [25 28 19 26 33 14]
藍(lán)球: 7

其他隨機(jī)函數(shù)

按類型隨機(jī)類

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

指定隨機(jī)范圍類

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

偽隨機(jī)排列的切片

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

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

生成標(biāo)準(zhǔn)正態(tài)分布

返回一個(gè)服從標(biāo)準(zhǔn)正態(tài)分布(標(biāo)準(zhǔn)差=1,期望=0)

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

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

生成標(biāo)準(zhǔn)指數(shù)分布

返回一個(gè)服從標(biāo)準(zhǔn)指數(shù)分布(率參數(shù)=1,率參數(shù)是期望的倒數(shù))

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

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

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

相關(guān)文章

  • Go字典使用詳解

    Go字典使用詳解

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

    Linux環(huán)境下編譯并運(yùn)行g(shù)o項(xiàng)目的全過程

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

    Go cobra庫(kù)使用教程

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

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

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

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

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

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

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

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

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

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

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

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

    構(gòu)造器一般面向?qū)ο笳Z(yǔ)言的典型特性,用于初始化變量。Go語(yǔ)言沒有任何具體構(gòu)造器,但我們能使用該特性去初始化變量。本文介紹不同類型構(gòu)造器的差異及其應(yīng)用場(chǎng)景
    2023-01-01
  • Golang并發(fā)讀取文件數(shù)據(jù)并寫入數(shù)據(jù)庫(kù)的項(xiàng)目實(shí)踐

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

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

最新評(píng)論