- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
Go官方给出沙箱中的代码如下:
package main
import (
"fmt"
"math/rand"
)
func main() {
fmt.Println("My favorite number is", rand.Intn(10))
}
这条指令:
Note: the environment in which these programs are executed is deterministic, so each time you run the example program rand.Intn will return the same number. (To see a different number, seed the number generator; see rand.Seed.)
阅读rand.Seed官方文档下的条目后和阅读 this answer ,我仍然无法正确地为随机数生成器设置种子。
有人可以演示如何使用 rand.Seed 函数为随机数生成器设置种子吗?
非常感谢,乔恩
最佳答案
默认情况下 rand.Intn
使用 globalRand.Intn .它是内部创建的,refer here .所以当你通过 rand.Seed 设置时
rand.Seed(time.Now().UTC().UnixNano())
然后 globalRand
使用新的种子值。
如果需要,您可以创建自己的带有种子值的随机数生成器。引用godoc example .
播放链接(无种子):https://play.golang.org/p/2yg7xjvHoJ
输出:
My favorite number is 1
My favorite number is 7
My favorite number is 7
My favorite number is 9
My favorite number is 1
My favorite number is 8
My favorite number is 5
My favorite number is 0
My favorite number is 6
播放链接(带种子):https://play.golang.org/p/EpW6R5rvM4
输出:
My favorite number is 0
My favorite number is 8
My favorite number is 7
My favorite number is 2
My favorite number is 3
My favorite number is 9
My favorite number is 4
My favorite number is 7
My favorite number is 8
编辑:
正如@AlexanderTrakhimenok 提到的,在 playground 中程序执行是确定性的
。但是,playground 不会阻止您提供 rand.Seed
值。
记住种子值是int64
。
当您rand.Intn
时,它使用globalRand
的默认种子值1
。
var globalRand = New(&lockedSource{src: NewSource(1).(Source64)})
在 playground 中 time.Now().UTC().UnixNano()
给你相同的值 1257894000000000000
因为 开始时间被锁定为一个常量
。但它与默认种子值不同,这就是第二个 Playground 链接产生不同结果的原因。
所以上面两个总是会产生相同的结果。
我们应该如何改变 Playground 上的结果?
是的,我们可以。让我们向 rand.Seed
提供 UnixNano()
值 1500909006430687579
,它是从我的机器生成的。
播放链接:https://play.golang.org/p/-nTydej8YF
输出:
My favorite number is 3
My favorite number is 5
My favorite number is 3
My favorite number is 8
My favorite number is 0
My favorite number is 5
My favorite number is 4
My favorite number is 7
My favorite number is 1
关于go - 如何在官方围棋之旅中播种随机数生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45268998/
我是docker的新手,我正在尝试将Angular示例项目“Tour of heros”进行docker化,您可以在这里找到: https://angular.io/generated/zips/to
当我点击“结束游览”按钮时,我无法再次开始 Bootstrap 游览。我搜索了所有 documentation ,但我还没有找到解决方案。 最佳答案 也试试 tour.restart()。我刚刚问了同
我正在浏览Tour C++中的Aliases模板。我不明白下面的代码以及如何使用它? template class Vector { public: using value_type = T;
我已经实现了intro.js到我的网站。但我只想在第一次访问时开始旅行。可能是通过使用cookie..网站是用html而不是php制作的.. 最佳答案 JavaScript cookie 是一种解决方
我想使用Knockout.js与 Bootstrap Tour 。特别是,我想将一些数据绑定(bind)点击处理程序附加到游览步骤中的按钮。 我创建了一个像这样的简单游览: var tour = ne
我正在学习着名的 Angular 教程,英雄之旅,但我正在努力迈出一步。 关于 sixth course, HTTP ,我们正在使用一种工具来模拟对 API 的 API 调用。 我想我遵循了所有步骤,
我正在做 Go 之旅,这部分是“slice 就像对数组的引用”。我根本没有更改此代码,所以我很好奇为什么它会耗尽内存。 最佳答案 不应该崩溃,可能是旅游网站有一段时间出了问题......目前任何方式,
A Tour of Go #23 : package main import ( "fmt" "math" ) func pow(x, n, lim float64) float64
无法将其分解为更小的示例...所以我使用 std::multimap 来存储一些值...这是一个简单的多项式类。 问题是最后一个函数,它将两个多项式相乘。当它与它们相乘时,它会产生一个具有多项式的多项
环境:Angular 5+ 来源:https://angular.io/tutorial 在 heroes.component.ts 类中有一个带冒号的赋值,如下所示: export class He
代码 let interestingNumbers = [ "Prime": [2, 3, 5, 7, 11, 13], "Fibonacci": [1, 1, 2, 3, 5, 8]
在 Bootstrap 演练中,我们有下一个和上一个按钮。在此点击下一步按钮,我们进入下一步。 但我想添加条件,如果该输入字段为空,则演练不应移至下一步,它应仅停留在当前步骤。 引用代码如下: rec
我是一名优秀的程序员,十分优秀!