【发布时间】:2012-02-07 16:26:20
【问题描述】:
我的程序的一部分要求我能够随机打乱列表元素。我需要一个函数,当我给它一个列表时,它会伪随机地重新排列列表中的元素。
排列的变化必须在每次调用时都可以看到列表。
我的实现似乎工作得很好,但我觉得它相当长并且正在增加我的代码库,而且我觉得它不是执行此操作的最佳解决方案。所以我需要一个更短的实现。这是我的实现:
在 shell 中运行它:
F:\> 错误 Eshell V5.8.4(使用 ^G 中止) 1> c(随机播放)。 {好的,随机播放} 2> 洗牌:列表([a,b,c,d,e])。 [c,b,a,e,d] 3> 洗牌:列表([a,b,c,d,e])。 [e,c,b,d,a] 4> 洗牌:列表([a,b,c,d,e])。 [a,b,c,e,d] 5> 洗牌:列表([a,b,c,d,e])。 [b,c,a,d,e] 6> 洗牌:列表([a,b,c,d,e])。 [c,e,d,b,a] 我的动机是 STDLIB 中没有这样的功能。在我的游戏中的某个地方,我需要重新整理,还需要找到解决问题的最佳有效解决方案,而不仅仅是一个有效的解决方案。有人可以帮助构建一个较短版本的解决方案吗?可能更有效率?谢谢
【问题讨论】:
标签: erlang