首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在尽可能均匀的情况下将地图随机分割?

如何在尽可能均匀的情况下将地图随机分割?
EN

Stack Overflow用户
提问于 2017-03-23 11:45:44
回答 2查看 1.6K关注 0票数 0

我有个简短的问题。我对金刚很陌生。假设我有一张这样的地图:

代码语言:javascript
运行
复制
map[int]string

我怎么能随机地把它分割成两个映射或数组,并且尽可能接近?因此,例如,如果有15个项目,它将被拆分7-8。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-23 12:47:34

例如:

代码语言:javascript
运行
复制
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以随机顺序迭代,与任何其他语言不同,
  • 模运算符%返回整数除法的剩余部分,
  • 一个函数可以返回多个值。
票数 2
EN

Stack Overflow用户

发布于 2017-03-23 12:54:51

你可以这样做:

代码语言:javascript
运行
复制
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://play.golang.org/p/6OnH1k4FMu

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42975100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档