我有个简短的问题。我对金刚很陌生。假设我有一张这样的地图:
map[int]string我怎么能随机地把它分割成两个映射或数组,并且尽可能接近?因此,例如,如果有15个项目,它将被拆分7-8。
发布于 2017-03-23 12:47:34
例如:
func split(m map[int]string) (odds map[int]string, evens map[int]string) {
n := 1
odds = make(map[int]string)
evens = make(map[int]string)
for key, value := range m {
if n % 2 == 0 {
evens[key] = value
} else {
odds[key] = value
}
n++
}
return odds, evens
}这实际上是一个有趣的例子,因为它展示了初学者不太清楚的Go的一些方面:
range m以随机顺序迭代,与任何其他语言不同,%返回整数除法的剩余部分,发布于 2017-03-23 12:54:51
你可以这样做:
myStrings := make(map[int]string)
// Values are added to myStrings
myStrings2 := make(map[int]string)
// Seed system time for random numbers
rand.Seed(time.Now().UTC().UnixNano())
for k, v := range myStrings {
if rand.Float32() < 0.5 {
myStrings2[k] = v
delete(myStrings, k)
}
}https://stackoverflow.com/questions/42975100
复制相似问题