在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. 重新排序Mathematica中
- 2. 在python中重新排序列表
- 3. 重新排序Python列表
- 4. jQuery重新排序表列
- 5. 序言中的重新排序列表
- 6. FullSimply不等式,然後在Mathematica中重新排列它們7
- 7. ZK在重新排序列表框
- 8. 在Sqlyog中重新排列列順序
- 9. 重新排序列在MySQL
- 10. 在runtinme列重新排序
- 11. 重新排序列在SAS
- 12. 更好的方式來重新排列Mathematica中的列表元素
- 13. 重新排列列表元素 - 序言
- 14. 重新排序列
- 15. SQL:重新排序列表順序
- 16. JQuery UI禁用排序列表中的重新排序
- 17. MVC jQuery重新排序列表沒有在回發排序
- 18. 重新排列序列
- 19. 基於排序列和另一列值重新排序表
- 20. Javafx:在TableView中重新排序列
- 21. 在sql中cte後重新排序列
- 22. 重新排列Python列表
- 23. 重新排列表的列
- 24. 重排列表不排序
- 25. 重新排列HTML列中的列表
- 26. 在Python中重新排列表格
- 27. 角數據表不列重新排序
- 28. jquery表列拖放與重新排序
- 29. 如何重新排序PHAssetCollection列表
- 30. 重新排序列表視圖下拉
在版本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