当前位置: 首页 > 面试题库 >

Go Rand包裹的难度

马弘和
2023-03-14
问题内容

是否有任何Go函数在每次运行时都返回真实的伪随机数?我的意思是考虑以下代码,

package main

import (
    "fmt"
    "rand"
)

func main() {
    fmt.Println(rand.Int31n(100))
}

每次执行此代码时,都会得到相同的输出。有没有一种方法每次调用都会返回不同的随机结果?


问题答案:

包rand可用于生成伪随机数,这些伪随机数是基于特定的初始值(称为“种子”)生成的。

初始种子的一个流行选择是例如当前时间(以纳秒为单位),当您多次执行程序时,该值可能会有所不同。您可以使用如下所示的当前时间初始化随机数生成器:

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

(不要忘记为此导入时间包)

还有另一个称为crypto /
rand的
软件包,可用于生成更好的随机值(此生成器可能还会考虑用户的鼠标移动,处理器的当前热量以及许多其他因素)。但是,此程序包中的功能要慢几倍,除非您不编写密码短语生成器(或其他与安全性有关的东西),否则普通的rand程序包可能就可以了。



 类似资料:
  • 相比于单纯的数据对象,将context包装成一个提供一些方法的对象会是更好的实践。因为这样能提供一些方法供我们操作context里面的数据。 // dependencies.js export default { data: {}, get(key) { return this.data[key]; }, register(key, value) { this.da

  • TimeDistributed包装器 Bidirectional包装器

  • R包是R函数的集合,包含代码和样本数据。 它们存储在R环境中名为"library"的目录下。 默认情况下,R在安装期间安装一组软件包。 当某些特定用途需要时,会在以后添加更多软件包。 当我们启动R控制台时,默认情况下只有默认包可用。 必须明确加载已安装的其他软件包,以供将要使用它们的R程序使用。 所有R语言版本的软件包都列在R软件包中。 以下是用于检查,验证和使用R软件包的命令列表。 检查可用的R

  • 在编程语言的一般术语中,包被设计用于提供使一组名称与另一组名称分离的方式。 在一个包中声明的符号不会与在另一个包中声明的相同符号冲突。 这样,包减少了独立代码模块之间的命名冲突。 LISP阅读器维护一个包含所有符号的表格。 当它找到新的字符序列时,它会创建一个新符号并存储在符号表中。 该表称为包。 当前包由特殊变量* package *引用。 LISP中有两个预定义的包 - common-lisp

  • 我试图用JAXB从XSD生成java类。 XSD是我公司的官方XSD,因此我不能仅为我的项目修改它们。在害怕在这个网站上尝试和搜索之后,我决定直接问这个问题。 我有这个在我的XSD: 这导致了一个问题:包装。指数行已在包中定义。指数 在查看生成的代码后,我可以看到,我们有一个静态的类行,进入另一个静态的内部类行(在另一个索引下) 我得到错误的行(在顶部底部)嵌套的类型行不能隐藏封闭类型 如果名称发

  • A very powerful tool of the Emmet toolkit. It takes an abbreviation, expands it and places currently selected content in the last element of generated snippet. If there’s no selection, action will sil