首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我们怎样才能产生一定数量的随机数,并将它们彼此联系起来,而不得到一个与其本身相连的数字呢?

我们怎样才能产生一定数量的随机数,并将它们彼此联系起来,而不得到一个与其本身相连的数字呢?
EN

Stack Overflow用户
提问于 2020-08-18 21:00:02
回答 2查看 95关注 0票数 1

我正在编写一个程序,其中我需要洗牌的人名单,并将他们与其他人从名单。但问题是奇数,因为一个人可以和他们自己联系起来。(我让这一切变得不可能,所以什么也没发生。)

例如,如果有三个人叫“比尔”、“约翰”和“乔纳斯”。如果“比尔”得到“乔纳斯”和“乔纳斯”得到“比尔”,那么“约翰”就和“约翰”联系在一起,但我让这一切变得不可能(让他们自己),所以没有发生任何事情。

有人知道我怎么解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-18 21:04:39

这本质上是一个“神秘圣诞老人”的问题。这方面有一个简单的算法:

  1. 随机调整名单。
  2. 对于每个人(最后一个除外),将他们链接到列表中的下一个人。
  3. 把最后一个人和第一个人联系起来。

这保证是一个随机链接,并保证没有人与他们自己联系。

请注意,这并不是真正的随机,因为没有子组的人是相互联系的。从任何一个人开始,你将能够跟随链接和联系到每一个其他人。如果我没记错的话,我认为在随机链接中,大约有三分之一的时间是无法从另一个子组到达的。然而,这种形式的洗牌和链接应该足以满足您的目的。

票数 6
EN

Stack Overflow用户

发布于 2020-08-18 21:07:54

将人按随机顺序排列,例如使用随机播放,然后将person I分配给person i+1,最后分配给person i+1。没有人会得到它自己。

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

https://stackoverflow.com/questions/63476535

复制
相关文章

相似问题

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