在Mathematica中重新排列长列表的最佳/最简单的方法是什么?在Mathematica中重新排序列表
回答
RandomSample[list]
是的,其实很简单。在自6
之前RandomSample
引入版本至少,一个可以使用:
#[[ Ordering[Random[] & /@ #] ]] & @ list
目前我使用
list[[[email protected]@Length[list]]]
这是数学8 Combinatorica还具有RandomPermutation功能(早期版本)。
我正在寻找其他/更好的解决方案,如果有的话。
RandomSample介绍之前,我已经使用了下面MathGroup功能严重,虽然RandomSample至少快一个在我的机器上的大小。
In[128]:= n = 10;
set = [email protected]
Out[129]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
In[130]:= Take[set[[Ordering[RandomReal[] & /@ [email protected]]]], n]
Out[130]= {8, 4, 5, 2, 3, 10, 7, 9, 6, 1}
除了性能的其他问题是,如果相同的随机实数被击中两次(不可能的,尽管可能)排序不会以随机顺序给予这两个。
对不起,但那是你在那里的一些狡猾的代码。 (1)'RandomReal []&/ @ Range @ n'可以替换为Random []&/ @ set'或通常更快的'RandomReal [1,Length @ set]'。 (2)'拿[...,n]'在这里没有做任何事情,可以删除。因此,代码应该是:'set [[Ordering @ RandomReal [1,Length @ set]]]' – 2011-05-10 15:28:08
实际上,使用'RandomReal'没有任何意义,因为它是在版本6中与'RandomSample'一起引入的, 。因此,这对于版本6之前的shuffle是最有意义的:'#[[Ordering [Random []&/ @#]]]&' – 2011-05-10 15:56:46
- 1. 在python中重新排序列表
- 2. 序言中的重新排序列表
- 3. FullSimply不等式,然后在Mathematica中重新排列它们7
- 4. 重新排序列在SAS
- 5. 在runtinme列重新排序
- 6. 重新排列列表元素 - 序言
- 7. 更好的方式来重新排列Mathematica中的列表元素
- 8. 重新排序列
- 9. SQL:重新排序列表顺序
- 10. MVC jQuery重新排序列表没有在回发排序
- 11. JQuery UI禁用排序列表中的重新排序
- 12. 重新排列序列
- 13. 基于排序列和另一列值重新排序表
- 14. 在sql中cte后重新排序列
- 15. 重排列表不排序
- 16. 在Python中重新排列表格
- 17. 角数据表不列重新排序
- 18. 重新排序列表视图下拉
- 19. 如何重新排序PHAssetCollection列表
- 20. 重新排列(重新排序,排序)阵列,你所希望的方式PHP
- 21. 重新排列在Java中
- 22. 重新排序阵列
- 23. jqGrid的列重新排序
- 24. 重新排序列名
- 25. 重新排序的列名
- 26. JqTreeGrid列重新排序
- 27. 重新排序阵列
- 28. PHP重新排序阵列
- 29. Eigensystem排序Wolfram Mathematica
- 30. 动画列表重新排列(JQuery UI排序)
在版本6之前,我使用'Combinatorica'RandomPermutation',它既快速又安全,因为它永远不会产生相同的元素。 – 2011-05-11 19:24:09
@Leonid Szabolcs表示:“Combinatorica也具有RandomPermutation功能(早期版本)。 我正在寻找其他/更好的解决方案,如果有的话。”我在回答这个问题,但这应该是6.0以前的更好解决方案。 – 2011-05-11 21:19:30
糟糕,错过了那一个。但后来我不明白 - 基于'Combinatorica'RandomPermutation'的解决方案似乎比我更优秀,为什么还要使用基于Random的方法(这是对@Szabolcs的问题,而不是你)? – 2011-05-11 21:22:53