iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >golang随机数的两种方式
  • 525
分享到

golang随机数的两种方式

2024-04-02 19:04:59 525人浏览 独家记忆
摘要

golang支持两种随机数生成方式: math/rand          // 伪随机crypto/rand   &nb

golang支持两种随机数生成方式:

  • math/rand          // 伪随机
  • crypto/rand        // 真随机

math/rand伪随机生成的数字是确定的,不论在什么机器、什么时间,只要执行的随机代码一样,那么生成的随机数就一样。为了尽量随机性,那么我们可以每次使用不同的seed来启动程序,就可以保证每次启动都产生新的随机数,聪明的你肯定想到了使用时间戳

func main() {
    fmt.Println(rand.Intn(100))
    //设置随机数种子,由于种子数值,每次启动都不一样
    //所以每次随机数都是随机的
    rand.Seed(time.Now().UnixNano())
    //随机生成100以内的正整数
    fmt.Println(rand.Intn(100))
}

crypto/rand 就是从这个地方读“真随机”数字返回,但性能比较慢。比上面慢10倍以上

package main
 
import (
    "crypto/rand"
    "encoding/binary"
    "fmt"
    "time"
)
 
func main() {
    var n int32
    binary.Read(rand.Reader, binary.LittleEndian, &n)
    fmt.Println(n)
}

通用随机数算法

package main
 
import (
    "fmt"
    "math/rand"
    "time"
)
 
func main() {
    fmt.Println(randomString(6, 0))
}
 

func randomString(size int, kind int) string {
    ikind, kinds, rsbytes := kind, [][]int{[]int{10, 48}, []int{26, 97}, []int{26, 65}}, make([]byte, size)
    isAll := kind > 2 || kind < 0
    rand.Seed(time.Now().UnixNano())
    for i := 0; i < size; i++ {
        if isAll { // random ikind
            ikind = rand.Intn(3)
        }
        scope, base := kinds[ikind][0], kinds[ikind][1]
        rsbytes[i] = uint8(base + rand.Intn(scope))
    }
    return string(rsbytes)
}

到此这篇关于Golang 随机数的两种方式的文章就介绍到这了,更多相关golang 随机数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: golang随机数的两种方式

本文链接: https://www.lsjlt.com/news/153489.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • golang随机数的两种方式
    golang支持两种随机数生成方式: math/rand          // 伪随机crypto/rand   &nb...
    99+
    2024-04-02
  • Java 生成随机数的 5 种方式
    1. 使用Math类的random()方法生成0到1之间的随机数:```javadouble randomNum = Math.ra...
    99+
    2023-09-20
    Java
  • php产生随机数的两种方法实例代码 输出随机IP
    分享下php生成随机数的三种方法,生成1-10之间的不重复随机数,php生成不重复随机数的例子,需要的朋友参考下。 如何用php生成1-10之间的不重复随机数? 例1,使用shuff...
    99+
    2022-11-21
    php 随机数
  • Java创建随机数的四种方式总结
    目录c语言随机数java1.Random2.SecureRandom3.ThreadLocalRandom4.Math.Random完整代码第一次接触到随机数还是在c语言里面 使用的...
    99+
    2024-04-02
  • PHP 生成随机数的 5 种方式,你知道几种
    我知道五种PHP生成随机数的方式:1. 使用rand()函数:rand()函数可以生成一个指定范围内的随机整数。例如,生成1到10之...
    99+
    2023-09-21
    PHP
  • java生成随机字符串的两种方法
    本文实例为大家分享了java生成随机字符串的具体代码,供大家参考,具体内容如下import java.util.Random;public class CharacterUtils {//方法1:length为产生的位数 public s...
    99+
    2023-05-31
    java 字符串 ava
  • 聊聊golang包查询的两种方式
    在Go语言中,包(Package)被视为代码的基本单元,这是与许多其他编程语言相似的。包含在一个包中的代码可以被认为是属于同一个逻辑单元。Go语言标准库提供了非常广泛的功能,但在特定场景下,我们可能需要一些扩展包来完成工作。这时就需要在Go...
    99+
    2023-05-14
  • golang清屏的两种方法
    在Golang中,清空控制台屏幕可以使用一些简单的方法。下面将介绍其中两种方法来清屏。方法一:使用系统命令在Golang中可以使用os/exec包和os包来执行外部命令和清空控制台屏幕。下面是一个使用os/exec包和os包来实现清空控制台...
    99+
    2023-05-14
  • numpy产生随机数的几种方法
    目录1.np.random.rand 生成一个0到1之间的均匀分布2.np.random.randn 返回一个符合标准正态分布的数组。3.np.random.randint返回一定范...
    99+
    2023-02-10
    numpy 产生随机数 numpy 生随机数
  • Java 随机数的获得方法(5种)
    1. Math.random() 静态方法 产生的随机数是 0 - 1 之间的一个 double,即 0 ...
    99+
    2023-10-25
    java 开发语言
  • golang中接口对象的转型两种方式
    接口对象的转型有两种方式: 1. 方式一:instance,ok:=接口对象.(实际类型)   如果该接口对象是对应的实际类型,那么instance就是转型之后对象,ok的值为tru...
    99+
    2024-04-02
  • Python随机数种子的使用方法
    本篇内容介绍了“Python随机数种子的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录 随机数种子 numpy中的随机数种子 随...
    99+
    2023-06-20
  • Java随机生成字符串的4种方式
    java.util.UUID 类可用于生成UUID, 它的static randomUUID方法返回一个32个字符的字符串。 import java.util.UUID;public class RandomStringGenerator ...
    99+
    2023-09-08
    java 开发语言 jvm
  • Java中生成随机数的4种方式与区别详解
    目录1.Random ① 基础使用② 优缺点分析③ 线程安全问题2.ThreadLocalRandom ① 基础使用 ② 实现原理 ③ 优缺点分析 ThreadLocalRandom...
    99+
    2024-04-02
  • C++产生随机数的几种方法小结
    目录使用cstdlib库1)使用srand()撒一个种子2)使用rand()产生随机数3)控制随机数范围4)示例代码使用random库:c++11 random library随机数...
    99+
    2023-03-09
    C++产生随机数 C++ 随机数
  • Pytorch常用的4种随机数生成方法
    Pytorch常用的4种随机数生成方法 一、torch.rand():构造均匀分布张量的方法二、torch.randn():构造标准正态分布张量的方法三、torch.randint():构造区...
    99+
    2023-09-21
    pytorch python 随机数
  • postMessage的两种使用方式
    postMessage是一个用于跨窗口通信的方法,它有两种使用方式:1. 发送消息给指定窗口:可以使用postMessage方法将消...
    99+
    2023-08-15
    postMessage
  • python的两种退出方式
    转自:http://www.cnblogs.com/gaott/archive/2013/04/12/3016355.html 概述 python的程序有两种退出方式:os._exit(), sys.exit()。本文介绍这两种...
    99+
    2023-01-31
    两种 方式 python
  • golang中随机数rand的使用
    目录1、math/rand2、crypto/rand1、math/rand 随机数从资源生成。包水平的函数都使用的默认的公共资源。 该资源会在程序每次运行时都产生确定的序列。如果需要...
    99+
    2024-04-02
  • Mybatis批量插入数据的两种方式
    总体描述 软件开发过程中需要批量插入数据的场景有几种: 从离线文件(excel, csv等)导入大批量数据到系统。从其它系统定时或者人工同步大批量数据到系统。程序自身的某些算法执行时会生成大批量数据保...
    99+
    2023-09-07
    mybatis java 开发语言 batch insert
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作