元素删除可交换的改组算法?

席德

对于我正在使用功能语言编写的应用程序,我想实现一个确定性的改组算法,以便给定相同的种子,它将返回相同的改组数组,并删除了X位置的某些元素元素最初不在数组中。例如:如果shuffle([1,2,3,4,5], seed) = [4,2,3,1,5]然后shuffle([1,3,4,5], seed)应该返回[4,3,1,5]但是在尝试重新发明轮子之前,我必须问:这种算法是否存在?(也想知道此属性是否有名称)。感谢您的任何投入。

斯科特·亨特(Scott Hunter)

如果您的随机播放产生原始列表或该列表反转(取决于种子),它将具有您描述的属性。其他所有子列表,并不是所有子列表都与它们对应的改组匹配时,将使元素以相同的方式移动。例如,考虑shuffle([1,2,3])在下表中,每一列都是不同的洗牌。对于每种情况,这3个子列表中的一个都有一个随机播放,可将元素的移动方式与其他两个不同。

shuffle([1,2,3])  = [1,3,2]  [2,1,3]  [2,3,1]  [3,1,2]
shuffle([1,2])    = [1,2]    [2,1]*   [2,1]    [1,2]*
shuffle([1,3])    = [1,3]    [1,3]    [3,1]    [3,1]
shuffle([2,3])    = [3,2]*   [2,3]    [2,3]*   [3,2]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章