随机数使用比较广泛,例如,抽奖、均衡等等。

下面简单说明其使用方法。

Example1

package main

import (
"log"
"math/rand"
) func main() {
i := rand.Intn(3)
log.Println(i)
}

output:

$ ./t

2018/02/24 11:40:58 2

$ ./t

2018/02/24 11:40:59 2

$ ./t

2018/02/24 11:41:00 2

$ ./t

2018/02/24 11:41:01 2

$ ./t

2018/02/24 11:41:02 2

$ ./t

2018/02/24 11:41:02 2

$ ./t

2018/02/24 11:41:03 2

$ ./t

2018/02/24 11:41:04 2

其中

rand.Intn(n int)

返回[0,n)之间的随机数

每次执行时得到的结果都是一样的。

没有调用Seed时, 默认使用Seed(1)。种子不变,产生的随机数就会不变。

Example2

package main

import (
"log"
"math/rand"
"time"
) func main() {
rand.Seed(time.Now().UnixNano())
i := rand.Intn(3)
log.Println(i)
}

output

$ ./t

2018/02/24 11:43:29 0

$ ./t

2018/02/24 11:43:31 2

$ ./t

2018/02/24 11:43:33 1

$ ./t

2018/02/24 11:43:34 2

$ ./t

2018/02/24 11:43:35 0

$ ./t

2018/02/24 11:43:36 2

$ ./t

2018/02/24 11:43:37 1

$ ./t

2018/02/24 11:43:38 1

$ ./t

2018/02/24 11:43:39 2

$ ./t

2018/02/24 11:43:40 2

$ ./t

2018/02/24 11:43:44 0

使用时间作为种子,输出完全随机数。

Example3

package main

import (
"log"
"math/rand"
"time"
) func main() {
rand.Seed(time.Now().UnixNano())
log.Println(rand.Perm(3))
}

output:

$ ./t

2018/02/24 12:04:27 [0 1 2]

$ ./t

2018/02/24 12:04:28 [0 2 1]

$ ./t

2018/02/24 12:04:30 [0 2 1]

$ ./t

2018/02/24 12:04:32 [0 1 2]

Perm(n)产生[0,n)的伪随机序列。

关于种子

随机种子(Random Seed)是计算机专业术语,一种以随机数作为对象的以真随机数(种子)为初始条件的随机数。一般计算机的随机数都是伪随机数,以一个真随机数(种子)作为初始条件,然后用一定的算法不停迭代产生随机数。

种子一般使用当前的系统时间,这是完全随机的。

Go随机数的使用的更多相关文章

  1. .Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数

    .Net中我们通常使用Random类生成随机数,在一些场景下,我却发现Random生成的随机数并不可靠,在下面的例子中我们通过循环随机生成10个随机数: ; i < ; i++) { Rando ...

  2. DotNet生成随机数的一些方法

    在项目开发中,一般都会使用到“随机数”,但是在DotNet中的随机数并非真正的随机数,可在一些情况下生成重复的数字,现在总结一下在项目中生成随机数的方法. 1.随机布尔值: /// <summa ...

  3. JavaScript 随机数

    JavaScript内置函数random(seed)可以产生[0,1)之间的随机数,若想要生成其它范围的随机数该如何做呢? 生成任意范围的随机数 //生成[100,120)之间的随机数 Math.fl ...

  4. SQL Server 随机数,随机区间,随机抽取数据rand(),floor(),ceiling(),round(),newid()函数等

    在查询分析器中执行:select rand(),可以看到结果会是类似于这样的随机小数:0.36361513486289558,像这样的小数在实际应用中用得不多,一般要取随机数都会取随机整数.那就看下面 ...

  5. 随机数(random)

    需求 Random rd=new Random(); 需要十以内的随机数  (0---10) System.out.println((int)((rd.nextDouble()*100)/10)); ...

  6. [LeetCode] Insert Delete GetRandom O(1) 常数时间内插入删除和获得随机数

    Design a data structure that supports all following operations in average O(1) time. insert(val): In ...

  7. Python 随机数用法

    1. random.seed(int) 给随机数对象一个种子值,用于产生随机序列. 对于同一个种子值的输入,之后产生的随机数序列也一样. 通常是把时间秒数等变化值作为种子值,达到每次运行产生的随机系列 ...

  8. C语言产生标准正态分布或高斯分布随机数

    C语言 产生标准正态分布或高斯分布 随机数 产生正态分布或高斯分布的三种方法: 1. 运用中心极限定理(大数定理) #include #include #define NSUM 25 double g ...

  9. C语言基础(11)-随机数发生器

    一. rand() rand是一个C语言库函数,功能是生成一个随机数.rand需要一个不同的种子,才能生成不同的随机数. 二. srand(int seed) rand需要一个不同的种子,才能生成不同 ...

  10. shell 指定范围产生随机数

    #/bin/bash echo "---------------产生随机数---------------" read -p "请输入起始数:" a read - ...

随机推荐

  1. quartz---的SimpleTrigger

    quartz---的SimpleTrigger package com.imooc.demo.helloQuartz; import java.text.SimpleDateFormat; impor ...

  2. React脚手架create-react-app+elementUI使用

    一.介绍 1.create-react-app是FaceBook官方发布了一个无需配置的.用于快速构建开发环境的脚手架工具. 2.优点 a.无需配置:官方的配置堪称完美,几乎不用你再配置任何东西,就可 ...

  3. Windows各种各种消息投递函数

    1.SendMessage:发送消息给指定的窗口过程:直到窗口过程处理了消息才返回. 2.PostMessage:将消息放入消息队列(与指定窗口创建的线程相关)中:无需等待消息处理,立即返回.   不 ...

  4. jsp jsp九个内置对象

       每个JSP页面在第一次被访问的时候,WEB容器都会把请求交给JSP引擎(即一个JAVA)程序.JSP引擎先将JSP翻译成一个_jspServlet实质也是一次servlet,然后按照 Servl ...

  5. 练习vue(class,style属性)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. poj 1330 Nearest Common Ancestors(LCA 基于二分搜索+st&rmq的LCA)

    Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 30147   Accept ...

  7. 《Python》反射、内置方法(__str__,__repr__)

    一.反射 通过字符串的形式操作对象相关的属性.(使用字符串数据类型的变量名来获取这个变量的值) Python中的一切事物都是对象(都可以使用反射) 反射类中的变量 反射对象中的变量 反射模板中的变量 ...

  8. L1-031 到底是不是太胖了

    据说一个人的标准体重应该是其身高(单位:厘米)减去100.再乘以0.9所得到的公斤数.真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | < 标准体重×10%). ...

  9. 【数据库】MFC ODBC(四)

    7.滚动记录 CRecordset提供了几个成员函数用来在记录集中滚动.当用这些函数滚动到一个新记录时,框架会自动地把新记录的内容拷贝到域数据成员中. void MoveNext( ); //前进一个 ...

  10. 用于主题检测的临时日志(0ece3f5c-d74f-449c-85a7-ed53fffb0e94 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)

    这是一个未删除的临时日志.请手动删除它.(abf5973f-502f-47e6-8825-4dd1c2cdd799 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)