讨论/算法和数据结构/求助大佬们关于随机排列的好算法/
求助大佬们关于随机排列的好算法

首先开发工具是python3哦
这边需要将几个元素随机排列到一个8x7的列表里,原则上平均分配 如有20个元素会每个元素排列两次,再随机抽取16个元素进行排序,其中排序需要满足一些特定的规则
这边用 20个元素复制一次,再将多余的16个元素再次添加进一个56个元素的bigList列表
在while循环中用random.shuffle函数将bigList打乱再按下标依次插入 插入完成后按照规则进行条件判断,若不满足条件则重新shuffle再插入直至满足条件。这样一来时间复杂性太高了,元素为14个时需要3-4秒完成判断,11个时甚至长时间运算不出结果(因为元素越少满足规则的排列越少)
有没有大佬有好一点的算法提供,本人编程小白,卡了一个星期了想不好方法。
规则是相同的元素不能排在List的同一列List是8X7的列表,为最后的输出结果

PS:有没有机智的小伙伴知道这个功能是干什么的😄

展开讨论

先对 20 个元素 shuffle 一下,取前 16 个。这样得到 56 个元素。
然后往 8 * 7 里面的列表里填。一列一列的填,每次从剩余的且符合条件的数里面随机一个出来就行。这样也不一定满足规则,可能最后一列剩 3 个 1

展开全部 5 讨论