【学习笔记】go 生成随机数

2023-05-16

目录

  • 核心
  • 代码示例
  • 参考与拓展

核心

go 的标准库(math/rand)中已经为我们提供了产生伪随机数字的核心方法,它们分别是用于产生种子的 rand.Send(value) 和用于产生伪随机数的 rand.intn(n) 以及类似的 Int31n()Float64() 等。

代码示例

rand.Send(value)
rand.Seed() 函数用于设置种子值以生成伪随机数。如果每次都是用相同的种子值,即 value 值不变,那么会生成相同的伪随机数集合。因此我们需要不同的种子值,而手动更新种子值显然是麻烦的,所以最好的做法就是使用时间戳的形式。

通常我们用 time.Now().UnixNano() 来作为 rand.Seed(value) 中的 value 值。当然也可以使用类似的 time.Now().Unix()time.Now().UnixMilli() 等。

rand.Intn(n)
rand.Intn() 函数接受一个数字 n 并在区间 [0, n) 中返回一个无符号伪随机整数。如果 n 的值小于零,它将引发错误。

如果要返回一个指定区间的随机数,则使用下面的语法:rand.Intn(max-min) + min

package main

import (
	"fmt"
	"math/rand"
	"time"
)

func main() {
	min := 10
	max := 20

	rand.Seed(time.Now().UnixNano())

	// 表示生成 [0,50)之间的随机数
	fmt.Println(rand.Intn(50))

	// 表示生成 [10,20)之间的随机数
	fmt.Println(rand.Intn(max-min) + min)

	// 表示生成 [0.0,1.0) 中的伪随机数。
	fmt.Println(rand.Float64())
}

参考与拓展

  1. What is the rand.Seed() function in Golang?
  2. How to generate random numbers in a given range in Go
  3. time package
  4. rand package
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【学习笔记】go 生成随机数 的相关文章

  • xavier上如何挂载SD卡

    參考博客 Jetson AGX Xavier避坑指南 六 挂载 SD 卡 zxxRobot的博客 CSDN博客 xavier挂载sd卡 AGX Xavier挂载SD卡 Bungehurst CSDN博客 Nvidia Jetson AGX
  • NXP-LPC1768起步之开发环境搭建与GPIO

    1 环境搭建 本工程使用ARM公司MDK414 低版本的可能会导致在MDK中无法下载调试程序 仿真器使用SEGGER公司JlinkV7 首先新建工程GPIO xff0c 选择路径保存 xff0c 然后会出现选择芯片界面 然后确定 xff0c
  • docker 修改默认存储路径的方法

    在xavier上使用docker时 由于空间不足 无法继续工程 几种修改 Docker 镜像默认存储位置的方法 墨天轮 使用方法一 使用软链接的方式 容器的存放位置在 var lib docker 默认存放位置 sudo docker in
  • linux下usb无线网卡对比

    2021年12月23日 冬月二十 xff0c 天晴 xff0c 微风 一 使用场景 1 xff0c 由于软件开发需要用到linux系统 xff0c 嵌入式设备nvidia xavier没有无线网卡 xff0c 需要自购 2 xff0c 另外
  • ubuntu 18.04.6官方下载地址

    Enterprise Open Source and Linux Ubuntu 进入界面 xff1a Download Ubuntu Desktop Download Ubuntu 点击 xff1a see our alternative
  • ubuntu误删 /var/lib/dpkg

    折腾了一个小时 Deepin Debian Ubuntu恢复误删除的 var lib dpkg 学亮编程手记的博客 CSDN博客 https jingyan baidu com article fc07f98946cd3e12fee5196
  • E: Could not get lock /var/lib/dpkg/lock

    dpkg error dpkg frontend is locked by another process dpkg error dpkg frontend is locked by another process 白蛇仙人的博客 CSDN
  • 树莓派安装花生壳软件 phddns ,没有显示SN码

    树莓派型号 xff1a Pi4B 2G 树莓派系统版本 xff1a uname a Linux raspberrypi 5 10 103 v7l 43 1529 SMP Tue Mar 8 12 24 00 GMT 2022 armv7l
  • E: Could not get lock /var/lib/dpkg/lock

    ubuntu安装软件时 xff0c 经常出现下面错误 xff1a sudo apt get install E Could not get lock var lib dpkg lock open 11 Resource temporaril
  • shell 脚本常用命令,音频提取、格式转换、切割

    实现一下功能 xff1a 1 xff0c mp4 视频文件提取 wav xff0c pcm xff1b 2 xff0c wav 切割为每段30s 的音频 xff1b 3 xff0c wav 切割后的音频转换为 pcm xff0c ffmpe
  • Apache Options Indexes FollowSymLinks详解

    如果该虚拟目录下没有 index html xff0c 浏览器也会显示该虚拟目录的目录结构 xff0c 列出该虚拟目录下的文件和子目录 如何禁止 Apache 显示目录列表呢 xff1f 要禁止 Apache 显示目录结构列表 xff0c
  • 大恒工业相机+opencv开发经历

    遇到的问题 xff1a 1 打开Daheng Galaxy Viewer x64 没有图像 由于对工业相机不熟悉 xff0c 原因是没有安装镜头 xff0c 安装镜头后可以正常使用 xff0c 否则只有白色或黑色 xff0c 用手指靠近镜头
  • Backtrace in Android

    Backtrace in Android 96 Tsing2015 0 7 2016 02 28 23 03 字数 33 阅读 2491评论 8喜欢 4 libscorkscrew so在android 5 0之后已经没有了 xff0c 之
  • CF1165B Polycarp Training

    原题链接 题目描述 Polycarp wants to train before another programming competition During the first day of his training he should
  • markdownIt大致流程分析

    文章目录 一 xff0c markdownIt模块大致流程二 xff0c 分析其执行流程三 xff0c 关于MarkdownIt实例属性options配置属性validateLink函数normalizeLink函数normalizeLin
  • 【嵌入式Bluetooth应用开发笔记】第一篇:DBUS概述与蓝牙开发小试牛刀

    DBUS概述 DBus xff08 D Bus xff09 是一个在不同程序之间传递消息的系统总线 DBus为不同的程序之间提供了一种通信机制 xff0c 这种通信制可以在不需要知道对方程序的情况下进行通信 DBus可以使用多种编程语言来开
  • 简单提升pandas技巧:如何降低内存占用率

    前言 pandas是一个Python软件库 xff0c 可用于数据分析和操作 本文记录实现一些降低内存占用的简单方法 当使用pandas操作小规模数据 xff08 低于100MB xff09 时 xff0c 性能一般不是问题 而当面对更大规
  • 腾讯云 ubuntu20 jupyter安装 服务器

    1 安装jupyter xff1a sudo pip3 install jupyterlab 注 xff1a 安装错误可能是flack没安装 xff1a pip install flask 之后再次安装jupyter 2 设置web密码 x
  • Oracle 12c 读书笔记——筑梦之路

    Oracle 12c 笔记 2020 7 13 登陆数据库 su oracle sqlplus 34 as sysdba 34 查看数据库状态 select status from v instance 修改密码 alter user sy
  • Docker容器内不能联网的解决方案

    参考资料 xff1a Docker容器内不能联网的6种解决方案 腾讯数据架构师的博客 CSDN博客 docker容器网络不通 Docker容器内不能联网的6种解决方案 1 docker网络使用 net host 模式 docker run

随机推荐

  • The CC version check failed下出现Failed CC version check. Bailing out! 解决方案

    这个问题是由于gcc版本不兼容导致的 先使用cat proc version查看目前系统版本下gcc的默认版本 再使用gcc version查看gcc版本 可以发现目前使用的gcc版本和系统需要的版本是不一致的 xff0c 这时候使用ls
  • Prim算法

    MST xff08 Minimum Spanning Tree xff0c 最小生成树 xff09 问题有两种通用的解法 xff0c Prim算法就是其中之一 xff0c 它是从点的方面 考虑构建一颗MST xff0c 大致思想是 xff1
  • 【嵌入式 · 单片机】一文带你搞懂电机驱动模块

    文章目录 1 基本原理1 1 控制电机转速1 2 控制电机旋转方向 2 H桥驱动2 1 96 H桥驱动 96 名称的由来2 2 H桥驱动控制电机旋转方向2 3 H桥驱动 3 电机驱动模块3 1 两个控制引脚的电机驱动3 2 三个控制引脚的电
  • win11卸载Ubuntu 20.04 WSL

    Ubuntu 20 04 LTS可以通过Microsoft Store进行安装 xff0c 但是不能通过Microsoft Store卸载 现列举两种卸载方式 通过应用与功能卸载 1 查找到安装的ubuntu 2 卸载 通过Windows终
  • 华为交换机ssh配置

    1 创建本地密钥对 Core SW rsa local key pair create The key name will be Core SW Host The range of public key size is 512 2048 N
  • mysql(mariadb)忘记密码

    root 64 localhost cat etc my cnf mysqld skip grant 添加这一行可以跳过验证 datadir 61 span class hljs keyword var span lib mysql soc
  • 「实验记录」MIT 6.S081 Lab4 traps

    Lab4 traps I SourceII My CodeIII MotivationIV Backtrace moderate i Motivationii SolutionS1 RISC V 栈帧结构S2 遍历所有栈帧 iii Resu
  • 「实验记录」MIT 6.S081 Lab11 networking

    Lab11 networking I SourceII My CodeIII MotivationIV SolutionV ResultVI Reference I Source MIT 6 S081 2020 课程官网Lab11 netw
  • 「Flask入门」通过路径名访问index.html主页

    先要在 app flask 目录下创建 templates 文件夹 xff0c 目录树如下 xff0c app flask venv templates hello py 在 templates 路径下新建 index html 主页 xf
  • 「Flask入门」在index.html中显示md

    首先要在云服务器上下载 marked 插件 xff0c 命令如下 xff0c span class token function npm span span class token function install span marked
  • 「格式技巧」word中删除空白页

    一 修改行间距 段落行间距设为固定值 1 磅 二 去掉分节符 找到 视图 里的 大纲 xff0c 将文章中多余的分节符删掉即可 xff0c 如下图红框处 xff0c
  • c语言实现10个数由小到大排序(冒泡法)

    10个数由小到大排序 xff1a 冒泡法 主要注意外层循环和内层循环的终止值 xff0c 可以考虑成3个数比较大小 xff0c 共需要2趟 xff0c 第一趟比较2次 xff0c 第二趟比较1次 xff1b 那么10个数比较大小 xff0c
  • debian系统使用NTP服务器并自动同步时间

    1 安装NTP工具 sudo apt install ntpdate span class token operator span y 以上只是安装成功 2 更改时区 sudo dpkg span class token operator
  • go 的时间操作

    未完 前言 本篇所有输入 xff0c 均用 p 代替 span class token comment 用 p 简写 span p span class token operator 61 span fmt span class token
  • Vm挂载虚拟硬盘(傻瓜式教程)

    Vm挂载虚拟硬盘 xff08 傻瓜式教程 xff09 第一步 xff1a 添加虚拟磁盘 打开vm xff0c 单机选择红帽的系统 编辑虚拟机设置 点击下面的添加 选择硬盘然后下一步 如果没有特殊的磁盘格式要求就默认推荐就好了 使用物理硬盘
  • 【学习笔记】在 Github Page 上托管基于 Vue 的项目

    环境 vscode 前言 本篇博文仅仅提供如何将 vue 项目部署在 github page 的基本操作 xff0c 至于项目的内容由读者自己决定 同时这是最基本的操作 xff0c 所以在复杂的项目部署中 xff0c 请根据具体情况 xff
  • 【学习笔记】查看你正在使用的 C++ 标准

    目录 查看 C 43 43 标准查看你的 gcc xff0c g 43 43 版本C 43 43 标准与 gcc 编译器的版本的对应关系C 43 43 标准与 Visual studio 的对应关系Visual studio 版本与 C 4
  • 【学习笔记】C++ 中的 virtual 关键字与虚函数

    目录 先决条件前言演示示例virtual 关键字的作用虚函数的规则参考与拓展深入拓展 先决条件 了解 C 43 43 中的多态这个概念 前言 virtual 关键字是面对对象中 xff0c 用于修饰类中的成员函数的关键字 被 virtual
  • 【经典回顾】HTTP 的请求与响应报文

    文章目录 前言请求报文请求行方法URL版本 首部行实体主体 响应报文状态行首部行实体主体 参考与拓展 前言 基于 HTTP1 1 xff0c 也就是目前最常用的 HTTP 协议版本 xff0c 涉及部分 HTTP 2 请求报文 让我们先来看
  • 【学习笔记】go 生成随机数

    目录 核心代码示例参考与拓展 核心 go 的标准库 xff08 math rand xff09 中已经为我们提供了产生伪随机数字的核心方法 xff0c 它们分别是用于产生种子的 rand Send value 和用于产生伪随机数的 rand