Mathematica实现随机组合表输出的问题(二)?

关于实现随机组合表输出的问题(二)?输入:list[s_,k1_,k2_]:=DeleteDuplicates[DeleteCases[Partition[RandomS... 关于实现随机组合表输出的问题(二)?
输入:
list[s_, k1_, k2_] :=
DeleteDuplicates[
DeleteCases[
Partition[
RandomSample[Flatten[Table[#, {RandomInteger[{k1, k2}]}] & /@ s]],
2], #1 == #2 || #1 == Reverse[#2] || #[[1]] == #[[2]] &], {x_,
x_}]
list[{a, b, c, d}, 3, 4]
输出:
{{a, c}, {b, c}, {a, a}, {b, d}, {d, d}, {b, c}, {d, c}}

说明:要求每个子表的元素不不能相同,这里出现了{a,a,},{d,d}类。
谢谢!
展开
 我来答
asd321fgh678
2014-04-11 · TA获得超过203个赞
知道小有建树答主
回答量:112
采纳率:0%
帮助的人:110万
展开全部

你把DeleteDuplicates和DeleteCases换了位置,但里面的选项参数没改变位置导致DeleteDuplicates和DeleteCases这两个函数都失效了。

list[s_, k1_, k2_] := Module[{lis}, Label[begin];
  lis = DeleteDuplicates[
    DeleteCases[
     Partition[
      RandomSample[
       Flatten[Table[#, {RandomInteger[{k1, k2}]}] & /@ s]], 2], {x_, 
      x_}], #1 == #2 || #1 == Reverse[#2] || #[[1]] == #[[2]] &];
  If[And @@ (k1 <= Count[Flatten[lis], #] & /@ s), Print[lis], 
   Goto[begin]]]

用不好看的过程式代码筛选了一下结果。昨天回答失败了,这个就不用采纳了。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式