美文网首页
golang 生成随机数

golang 生成随机数

作者: 顶尖少爷 | 来源:发表于2020-05-09 17:52 被阅读0次

真随机和伪随机概念

先大概了解一下伪随机和真随机的概念。根据密码学原理,要想对一个“随机数”进行随机性检验有以下几个标准:

  • 统计学伪随机性 - 在给定的随机比特流样本中,1 的数量大致等于 0 的数量,也就是说,“10”“01”“00”“11” 四者数量大致相等。说人话就是:“一眼看上去是随机的”。

  • 密码学安全伪随机性 - 就是给定随机样本的一部分和随机算法,不能有效的演算出随机样本的剩余部分。

  • 真随机性 - 其定义为随机样本不可重现。

根据以上几个标准,其对应的随机数也就分为以下几类:

  • 伪随机数 - 满足第一个条件的随机数。

  • 密码学安全的伪随机数 - 同时满足前两个条件的随机数。可以通过密码学安全伪随机数生成器计算得出

  • 真随机数 -同时满足三个条件的随机数

golang 实现伪随机

package main

import (
    "fmt"
    "math/rand"//伪随机
    "time"
)

func main() {
    // 随机种子
    rand.Seed(time.Now().Unix())
    // 生成 20 个 [0, 100) 范围的伪随机数。
    for i := 0; i < 20; i++ {
        result := rand.Intn(100)
        fmt.Println(result)
    }
}

golang 真随机实现

package main

import (
    "crypto/rand" //真随机
    "fmt"
    "math/big"
)

func main() {
    // 生成 20 个 [0, 100) 范围的真随机数。
    for i := 0; i < 20; i++ {
        result, _ := rand.Int(rand.Reader, big.NewInt(100))
        fmt.Println(result)
    }
}

相关文章

  • golang踩坑---批量生成随机数重复问题

    今天项目里面遇到一个问题,一个业务需要动态生成多个随机数和随机字符串,都知道golang中生成随机数的核心是设置随...

  • Golang:随机数

    golang 随机数有一个很有趣的地方,如果我们不自行定义随机数种子的话,每次生成的随机数都是一样的。 比如 fo...

  • golang 生成随机数

    真随机和伪随机概念 先大概了解一下伪随机和真随机的概念。根据密码学原理,要想对一个“随机数”进行随机性检验有以下几...

  • 在以太坊生成随机数的几种方式(含代码)

    一、什么是随机数 随机数都是由随机数生成器(Random Number Generator)生成的。随机数分为”真...

  • 生成随机数

    两个C函数 rand()函数生成的随机数是伪随机数,所谓伪随机数,指的是程序每次运行,生成的随机数都是不变的,生成...

  • Golang生成随机数的方法总结

    生成区间随机数 生成指定区间随机数(包括纯数字/纯字母/随机)

  • PHP生成随机数

    PHP生成随机数,相信大家在做项目的时候是最常见的吧。js生成随机数,PHP生成随机数。 应用场景:用户注册/登录...

  • Excel怎么生成随机数?

    Excel怎么生成随机数?如何生成指定范围内的随机数呢?可以在Excel中使用函数,生成随机数。 1、在单元格中输...

  • go生成随机数字和固定长度字符串

    生成随机数字 go可以通过math/rand包来生成随机数在生成随机数之前,需要一个种子,用于整个过程的初始化,否...

  • 无处不在的随机数

    目录: 什么是随机数 随机数分类 伪随机数生成器 真随机数生成器 各种语言中的随机数 使用系统时间作为种子是否安全...

网友评论

      本文标题:golang 生成随机数

      本文链接:https://www.haomeiwen.com/subject/wsqlnhtx.html