【发布时间】:2018-10-19 21:54:53
【问题描述】:
我想同时从列表中获取多个随机元素,但需要真正随机而不是每次都是相同的元素。
第二个问题是:我想从列表中获取 uniq 元素,例如如果我得到 08,则需要从列表中删除此代码并获取网络随机排除 08 字符串。
这是我的实际代码:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// Won't work on the Playground since the time is frozen.
rand.Seed(time.Now().Unix())
reasons := []string{
"01","02","03","04", "05", "06", "07", "08", "09", "10",
}
n := rand.Int() % len(reasons)
n1 := rand.Int() % len(reasons)
n2 := rand.Int() % len(reasons)
fmt.Println("", reasons[n])
fmt.Println("", reasons[n1])
fmt.Println("", reasons[n2])
}
我的输出是这样的:
07
02
06
每次都返回相同的输出,我希望是随机且独特的
【问题讨论】:
-
每次运行都不一样,除非
time.Now()每次运行都一样。 -
请注意,在一秒钟内运行多次将产生相同的结果,因为
time.Now().Unix()是以整秒为单位测量的。如果您想要更细粒度的时间戳,请使用UnixNano() -
@JimB 在我的电脑里返回 09 09 09, ---- 01 01 01
-
@StefanoConte:这与您在问题中所说的不同,它是 3 个不同的索引,但后续运行的结果相同。它是哪一个? 09、09、09 不太可能,但仍有可能。那是你正在执行的确切代码吗?
标签: go