[问题] 如何排列组合所有组合

楼主: protien (protien)   2014-07-12 00:03:34
大家好,想跟各位请教一下一个排列组合的问题的写法。
以下是最近想处理的一个问题:
有一组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}}
但是由于我的问题利用这个方法需要的内存的量太大了,跑到一半软件就罢工了 囧
所以想请教一下大家有什么方法或者另外的写法可以解决这件事?
作者: LPH66 (-6.2598534e+18f)   2014-07-12 16:44:00
要看你 {w,x,y,z} 接下来要做什么如果要对每个 {w,x,y,z} 做事的话, 不如直接 Do像是 Do[..., {w,{1,2,3,...,100}}, {x,{1,2,3,...,100}}]
楼主: protien (protien)   2014-07-12 23:30:00
谢谢你的回答 但这边的我直接用Do去做接下来的问题的时候例如:array里面的element的相乘 一样会遇到内存爆炸因为软件会一直Do下去 不会释放内存 除非跑完100^次相乘所以想请教说是否有更好写法去用在大量的data的处理上
作者: LPH66 (-6.2598534e+18f)   2014-07-13 15:46:00
你可能要详细说明你的处理是什么, 这种大量资料处理的东西要对个别处理仔细最佳化, 这不管写什么程式语言都一样呃, 我是指 case by case 的最佳化...

Links booklink

Contact Us: admin [ a t ] ucptt.com