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

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

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. OC 设计模式

    设计模式 一种或几种被所有程序员广泛认同的,有某些特定功能,或者实现某些特殊作用的编码格式 单例模式 键值编码(KVC) 键值观察(KVO) 观察者模式() 工厂模式(工厂方法) ps:MVC &am ...

  2. 使用pthread_create()创建线程

    可以通过 pthread_create()函数创建新线程. #include <pthread.h> int pthread_create(pthread_t *restrict tidp ...

  3. NOIP初赛 BLESS ALL!

    祝初赛顺利!RP++! 下午再写一篇题解来加RP

  4. zabbix项目实践

    一,Zabbix生产环境监测案例概述 1.1 项目规划 [x] :主机分组 交换机 Nginx Tomcat MySQL Apache PHP-fpm redis(也有状态页, 自己研究) memca ...

  5. 弹出层小插件之(一)sweetalert

    //弹出层小插件之(一)sweetalert 1.引入sweetalert.css 2.引入sweetalert.min.js 下载地址:http://t4t5.github.io/sweetaler ...

  6. BLE低功耗蓝牙关键技术解析与应用

    BLE基础知识 1.传统蓝牙的传输距离几十米到几百米不等,BLE 则规定为 100 米(实际上没有那么远,50米以内比较稳定,和设备发射功率有关) 2.为了实现极低的功耗,BLE 协议设计为:在不必要 ...

  7. c++模板函数声明定义分离编译错误详解

    今天看到accelerated c++上有个简单的vector容器的实现Vec,就再vs2008上编译了下: ///// Vec.h #ifndef GUARD_VEC_H #define GUARD ...

  8. log4j的配置详解(转)

    转自:http://blog.sina.com.cn/s/blog_5ed94d710101go3u.html 最近使用log4j写log时候发现网上的写的都是千篇一律,写的好的嘛不全,写的全一点的嘛 ...

  9. servlet基础(组成与生命周期)

    servlet基础作用:servlet是运行在Web服务器或应用服务器上的程序:担当web浏览器或其他HTTP客户程序发出的请求与HTTP服务器上的数据库或应用程序之间的中间层.1.读取客户程序发送的 ...

  10. juery 安全加固 集合

    来源 jquery升级坑 2  3  4  5  版本  相关源码分享 新建document    jquery ajax使用说明 最近在iteye的新闻中看到jQuery已经更新到了1.6.1. 和 ...