我有一组 N 个问题,每个问题都归类为 R 个主题之一。我正在尝试为测验的问题生成一些随机排列。
我将如何生成一组问题的随机排列,使得没有两个连续的问题具有相同的主题?它不需要完美;我只是不想让人们连续提出五个相同类型的问题。
此外,如果这样的排序是不可能的(例如,A 的 18 个和 B 的 2 个),算法能否找到“均匀分布”的排列?(在这种情况下,合理地类似于 6As、B、7As、B、5As)
或者,由于我按顺序提供问题,我是否可以每次随机选择不同主题的剩余问题,而不会在最后强制重复一些问题?
我在 Google 上随意查看了一段时间,似乎找不到任何适合这种情况的东西。除了随机生成排列,直到找到一个有效的排列,这是缓慢、丑陋和愚蠢的。