golang 随机数的两种方式
作者:@航空母舰 发布时间:2024-04-28 10:46:44
标签:golang,随机数
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))
}
/**
* size 随机码的位数
* kind 0 // 纯数字
1 // 小写字母
2 // 大写字母
3 // 数字、大小写字母
*/
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)
}
来源:https://blog.csdn.net/hudeyong926/article/details/124857119
0
投稿
猜你喜欢
- 通常表中会有一个Create date 创建日期的字段,其它数据库均有默认值的选项。MySQL也有默认值timestamp,但在MySQL中
- 顾名思义,本期内容肯定是涉及编程时间,那在操作python要怎么用time这个方法呢?一起来看下吧~时间模块的定义与使用:时间模块time是
- 在用到编辑器时,就会碰到一点,那就是标签的闭合问题,这个问题非常严峻,因为这可能会导致网页显示的整体样式受到破坏。这最近在PJ的functi
- 后续代码更新和功能添加会提交到个人github主页,有兴趣可以一起来完善!如果只是拿过去运行看结果,请注意平台相关性以及python版本号,
- 今天在pycharm(我用的python3)练习的时候,发现报了个AttributeError: module 'urllib
- 因为自己在设计的时候就对这些东西经常不是很在意,以为是很小的事情,结果往往给自己搞出不少的麻烦。可能大家没有我这么粗心,不过还是想提醒一下跟
- 首先新建一个dataframe:In[8]: df = pd.DataFrame({'name':list('ABC
- FlippingBook是一款收费的图书翻页效果的flash播放器。在线预览地址:FlippingBook,破解版下载地址 备用下
- 一、绘制线性图形执行如下代码import matplotlib.pyplot as pltdataX=[1,2,3,4]dataY=[2,4
- 最近需要用python打包一个单页面网页demo,于是准备用python包pyinstaller来打包程序。网上搜索了一下,大部分教程都是打
- 本文实例讲述了python实现与redis交互操作。分享给大家供大家参考,具体如下:相关内容:redis模块的使用设置值获取值安装模块导入模
- 统计十篇新闻TF-IDF统计TF-IDF词频,每篇文章的 top10 的高频词存储为 json 文件TF-IDFTF-IDF(term fr
- handle non numerical data举个例子,将性别属性男女转换成0-1,精通ML的小老弟们可以略过本文~~,这里不考虑稀疏向
- python pyaudio音频录制安装所需要的包pip install pyaudio监听麦克风import pyaudioimport
- 最近实现了一些微信的简单玩法 我们可以通过网页版的微信微信网页版,扫码登录后去抓包爬取信息,还可以post去发送信息。》》安装it
- MySQL查询语句大家都在用,但是应该如何设计高效合理的MySQL查询语句呢?下面就教您MySQL查询语句的合理设计方法,分享给大家学习学习
- 1,建路由;2,写方法;def fanyi(request): import requests import jso
- 前言:在生活中工作中,我们经常使用Excel用于储存数据,Tableau等BI程序处理数据并进行可视化。我们也经常使用R、Python编程进
- Python具有基本的文本文件读写功能。Python的标准库提供有更丰富的读写功能。文本文件的读写主要通过open()所构建的文件对象来实现
- 有一个古老的争论,是关于在哪里存储应用程序业务逻辑的:是在应用程序本身的业务逻辑层中还是在数据库层中。应用程序逻辑层的绝对支持者提出,数据库