Mathematica如何实现这个随机组合表?如何实现这个随机组合表?设有n个元素,随即把2个相异元素结合为一组,组成一个表,例如 :输入 :s1 = {a,b,c,d};k1 = 2;k2 = 3;输出 :s2 = {{a,b},{a,c},{a,d},{b,d},{c,d}}说明 :
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/27 23:20:54
Mathematica如何实现这个随机组合表?如何实现这个随机组合表?设有n个元素,随即把2个相异元素结合为一组,组成一个表,例如 :输入 :s1 = {a,b,c,d};k1 = 2;k2 = 3;输出 :s2 = {{a,b},{a,c},{a,d},{b,d},{c,d}}说明 :
Mathematica如何实现这个随机组合表?
如何实现这个随机组合表?
设有n个元素,随即把2个相异元素结合为一组,组成一个表,例如 :
输入 :s1 = {a,b,c,d};
k1 = 2;
k2 = 3;
输出 :
s2 = {{a,b},{a,c},{a,d},{b,d},{c,d}}
说明 :k1表示每个元素在s2中出现的最少次数,k2表示每个元素在s2中出现的最多次数,且s2中不能出现
相同的组,如 {a,b} 与 {b,a} 是相同的,不能同时出现.
Mathematica如何实现这个随机组合表?如何实现这个随机组合表?设有n个元素,随即把2个相异元素结合为一组,组成一个表,例如 :输入 :s1 = {a,b,c,d};k1 = 2;k2 = 3;输出 :s2 = {{a,b},{a,c},{a,d},{b,d},{c,d}}说明 :
lz好久不见,话说这么长时间了你也要有点进步啊.
list[s_,k1_,k2_] :=
DeleteDuplicates[
Partition[
RandomSample[Flatten[Table[#,{RandomInteger[{k1,k2}]}] & /@ s]],
2],#1 == #2 || #1 == Reverse[#2] &]
如果不要{{a,a},{b,b}}这种类型的就下面这样,不过这种有一定几率出空括号,当然也还有其他方法.
list[s_,k1_,k2_] :=
DeleteCases[
DeleteDuplicates[
Partition[
RandomSample[Flatten[Table[#,{RandomInteger[{k1,k2}]}] & /@ s]],
2],#1 == #2 || #1 == Reverse[#2] || #[[1]] == #[[2]] &],{x_,x_}]