[問題] 如何排列組合所有組合

看板Mathematica作者 (protien)時間9年前 (2014/07/12 00:03), 9年前編輯推噓2(208)
留言10則, 2人參與, 最新討論串1/1
大家好,想跟各位請教一下一個排列組合的問題的寫法。 以下是最近想處理的一個問題: 有一組4維的陣列,每一個維度有 100 個 element {{1,2,3,...100},{1,2,3,...100},{1,2,3,...100},{1,2,3,...100}} 現在想要在每一個維度中隨機抽樣並放進一個新的陣列 {w,x,y,z},例如: {1,1,1,1}, {1,1,1,2},......{1,1,1,100}, or {2,1,1,100} 數字可以相同,現在想用mathematica 把所有的組合全部列出來。 個人有在help那邊找到一個指令可以做類似的事情 Tuples 例如: In: Tuples[{{a, b}, {1, 2, 3, 4}, {x}}] out: {{a, 1, x}, {a, 2, x}, {a, 3, x}, {a, 4, x}, {b, 1, x}, {b, 2, x}, {b, 3, x}, {b, 4, x}} 但是由於我的問題利用這個方法需要的記憶體的量太大了,跑到一半軟體就罷工了 囧 所以想請教一下大家有甚麼方法或者另外的寫法可以解決這件事? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.117.201.73 ※ 文章網址: http://www.ptt.cc/bbs/Mathematica/M.1405094617.A.4F7.html ※ 編輯: protien (140.117.201.73), 07/12/2014 00:04:43

07/12 16:44, , 1F
要看你 {w,x,y,z} 接下來要做什麼
07/12 16:44, 1F

07/12 16:45, , 2F
如果要對每個 {w,x,y,z} 做事的話, 不如直接 Do
07/12 16:45, 2F

07/12 16:45, , 3F
像是 Do[..., {w,{1,2,3,...,100}}, {x,{1,2,3,...,100}}]
07/12 16:45, 3F

07/12 23:30, , 4F
謝謝你的回答 但這邊的我直接用Do去做接下來的問題的時候
07/12 23:30, 4F

07/12 23:32, , 5F
例如:array裡面的element的相乘 一樣會遇到記憶體爆炸
07/12 23:32, 5F

07/12 23:34, , 6F
因為軟體會一直Do下去 不會釋放記憶體 除非跑完100^次相乘
07/12 23:34, 6F

07/12 23:36, , 7F
所以想請教說是否有更好寫法去用在大量的data的處理上
07/12 23:36, 7F

07/13 15:46, , 8F
你可能要詳細說明你的處理是什麼, 這種大量資料處理的東西
07/13 15:46, 8F

07/13 15:47, , 9F
要對個別處理仔細最佳化, 這不管寫什麼程式語言都一樣
07/13 15:47, 9F

07/13 15:48, , 10F
呃, 我是指 case by case 的最佳化...
07/13 15:48, 10F
文章代碼(AID): #1Jm0hPJt (Mathematica)