亲爱的朋友们,
我正在努力解决以下问题:
我创建了80对数字。这些配对应保持不变,但配对顺序应随机化。
所以,我有一个包含这些配对的变量:sequence=[配对1配对2配对3等等]。
如何随机排列这些配对的顺序?例如,它看起来是这样的:随机化的_序列=[配对\u 2配对\u 3配对\u 1….]
现在是棘手的部分:
配对的数量从1到40。从1到40的每个数字都与1到40之间的一个随机偶数和1到40之间的一个随机不均匀数组合。例如,对于1,我可以使用配对1和18以及配对1和9。但是1不能与1配对!没有一个数字可以与其自身相匹配。此外,1不得与2配对,2不得与1配对,顺序无关紧要。3不得与4配对,5不得与6配对,以此类推,直到39不得与40配对,每次,顺序都不重要。因此,39和40不可能像40和39一样。
不能配对的数字有:
1 2 | 3 4 | 5 6 | 7 8 | 9 10 | 11 12 | 13 14 | 15 16 | 17 18 | 19 20 | 21 22 | 23 24 | 25 26 | 27 28 | 29 30 | 31 32 | 33 34 | 35 36 | 37 38 | 39 40
例如,2和3可以配对!
现在的问题是,如果我有这两对14 16和16 9,并且在16 9之前的14 16落地的对的洗牌之后,我也有一个16 16配对,这一定不会发生。这种不需要的配对在洗牌过程中会发生很多。例如,14/16中的14不能前面加14或13,14/16中的16不能后面加16或15。
我在考虑编写类似这样的代码:“如果1后面跟/前面跟1或2,那么再次洗牌。如果2后面跟/前面跟1或2,那么再次洗牌。如果3后面跟/前面跟3或4,那么再次洗牌…”等等,直到“如果40后面跟/前面跟40或39,那么再次洗牌。”
你觉得呢,有办法做到吗?或者是一个更简单的解决方法,我没有想过?
我非常感谢任何帮助,这是困扰我,因为现在已经有一段时间了。
提前谢谢,
鲁珀特