jfo*_*ain 5 javascript php mysql algorithm shuffle
我在sql数据库中有一套测验游戏问题(实际上是javascript和sqlite).这些问题都有难度级别从1到5,5最难.这是数据的简化可视化......
+---------+--------------+ | id | difficulty | +---------+--------------+ | 1 | 1 | | 2 | 5 | | 3 | 2 | | 4 | 3 | | 5 | 2 | | 6 | 2 | | 7 | 4 | | 8 | 1 | | 9 | 5 | | 10 | 3 | +---------+--------------+
现在我可以在sql或代码中随机播放这些内容,因此它们是以无序重复的随机顺序,但我也想控制难度字段的排序方式.
因此,例如,我可以有一个改组的问题,其中难度级别顺序看起来像这样......
1,1,5,2,3,3,2,2,2,4
这有几个"困难",这不是我想要的.玩游戏的用户将得到几组同样困难的问题.像这样的订单会更好......
1,2,3,2,5,4,1,2,3,2
我想确保问题被洗牌,但没有困难聚集.如果有任何"团块",那么很少有困难.对MySQL/javascript(或PHP)的任何帮助都会很棒.
而不是将所有ID组合在一起,为什么不按难度对它们进行分组,使每个部分随机化,然后逐个将它们拉出来.或者,一旦它们被随机分类,您可以从随机难度中拉出它们,然后移除该难度级别,直到您有一个问题.
这是我在回答sje397时所考虑的问题,因此我将其添加到我的答案中.
只要所有其他选择加起来最大的组减1,你将没有结块(假设你的算法是正确的).然而,该算法基本上采取从A(具有最多选择数的组)中挑选的形式,从另一组中挑选,从A等中挑选,直到A等于其他组的大小.所以最好的算法会检查找到最大的组并从中挑选.然后它会从另一个组中挑选,然后检查哪个组是最大的,然后从中选择,除非它是之前选择的组等.