最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解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ù)生成器。本文就來(lái)和大家詳細(xì)講講math/rand的使用

包"math/rand"

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

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

不同的種子生成不同的隨機(jī)數(shù),無(wú)種子編譯后運(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語(yǔ)言異步API設(shè)計(jì)的扇入扇出模式詳解

    Go語(yǔ)言異步API設(shè)計(jì)的扇入扇出模式詳解

    這篇文章主要為大家介紹了Go語(yǔ)言異步API設(shè)計(jì)的扇入扇出模式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 淺析Go 字符串指紋

    淺析Go 字符串指紋

    這篇文章主要介紹了Go 字符串指紋的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)go語(yǔ)言,感興趣的朋友可以了解下
    2020-09-09
  • Go 語(yǔ)言 IDE 中的 VSCode 配置使用教程

    Go 語(yǔ)言 IDE 中的 VSCode 配置使用教程

    Gogland 是 JetBrains 公司推出的Go語(yǔ)言集成開發(fā)環(huán)境。這篇文章主要介紹了Go 語(yǔ)言 IDE 中的 VSCode 配置使用教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Golang Map簡(jiǎn)介以及底層原理

    Golang Map簡(jiǎn)介以及底層原理

    這篇文章主要介紹了Golang Map簡(jiǎn)介以及底層原理的相關(guān)資料,Go語(yǔ)言提供的map是一種鍵值對(duì)存儲(chǔ)結(jié)構(gòu),支持基本操作如len、delete等,map是非線程安全的,可用sync.Mutex確保并發(fā)安全,為高效查找和插入,需要的朋友可以參考下
    2024-10-10
  • Go Gin框架中的binding驗(yàn)證器使用小結(jié)

    Go Gin框架中的binding驗(yàn)證器使用小結(jié)

    Gin框架中的binding驗(yàn)證器為我們提供了簡(jiǎn)便的數(shù)據(jù)綁定和驗(yàn)證功能,通過(guò)合理使用binding和validate標(biāo)簽,我們可以確保API接口的數(shù)據(jù)合法性和完整性,這篇文章主要介紹了Go Gin框架中的binding驗(yàn)證器使用指南,需要的朋友可以參考下
    2024-07-07
  • 使用go來(lái)操作redis的方法示例

    使用go來(lái)操作redis的方法示例

    今天小編就為大家分享一篇關(guān)于使用go來(lái)操作redis的方法示例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-04-04
  • Go設(shè)計(jì)模式之單例模式講解和代碼示例

    Go設(shè)計(jì)模式之單例模式講解和代碼示例

    單例是一種創(chuàng)建型設(shè)計(jì)模式,讓你能夠保證一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)該實(shí)例的全局節(jié)點(diǎn),本文就通過(guò)代碼示例給大家講講Go單例模式,需要的朋友可以參考下
    2023-07-07
  • 簡(jiǎn)單對(duì)比一下?C語(yǔ)言?與?Go語(yǔ)言

    簡(jiǎn)單對(duì)比一下?C語(yǔ)言?與?Go語(yǔ)言

    這篇文章主要介紹了簡(jiǎn)單對(duì)比一下?C語(yǔ)言?與?Go語(yǔ)言的相關(guān)資料,需要的朋友可以參考下
    2023-08-08
  • GORM不定參數(shù)的用法最佳實(shí)踐

    GORM不定參數(shù)的用法最佳實(shí)踐

    這篇文章主要為大家介紹了GORM不定參數(shù)的用法最佳實(shí)踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Go語(yǔ)言中slice作為參數(shù)傳遞時(shí)遇到的一些“坑”

    Go語(yǔ)言中slice作為參數(shù)傳遞時(shí)遇到的一些“坑”

    這篇文章主要給大家介紹了關(guān)于Go語(yǔ)言中slice作為參數(shù)傳遞時(shí)遇到的一些“坑”,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03

最新評(píng)論

浙江省| 梁河县| 杨浦区| 涞水县| 漳浦县| 潞城市| 泰安市| 长子县| 绿春县| 邳州市| 天全县| 镇宁| 平阳县| 卓资县| 常宁市| 武隆县| 黄梅县| 东丰县| 武汉市| 屏东市| 宜州市| 富源县| 万全县| 华池县| 额济纳旗| 左权县| 上林县| 德清县| 清新县| 雷波县| 大连市| 永州市| 布尔津县| 新源县| 吉水县| 兴山县| 焦作市| 德阳市| 昭觉县| 柘城县| 泸州市|