如何编写具有两个参数的函数,并且它应该生成组合任意范围位,例如:
function(n,k) n=range, k=number of 1 digits. if i give 4 and 2 to function input: function(4,2)
output:1100,1010,1001,0110,0011,0101
答案 0 :(得分:1)
这为您提供了随机数字列表:
rands[n_, k_] := Module[{out},
out = Table[0, {n}];
out[[RandomSample[Range[n], k]]] = 1;
out]
rands[4, 2]
(* {1,1,0,0} *)
不确定您想要哪种输出形式,但您可以使用FromDigits。
编辑一个更清洁的方法..
rands[n_, k_] := Table[0, {n - k}]~Join~Table[1, {k}] // RandomSample
编辑:根据你的评论,我猜你想要的是排列:(我想我采取“任意”来表示随机..)
p[n_, k_] := Permutations[Table[0, {n - k}]~Join~Table[1, {k}], {n}]
(*
{{0,0,1,1},{0,1,0,1},{0,1,1,0},{1,0,0,1},
{1,0,1,0},{1,1,0,0}}
*)
答案 1 :(得分:0)
function[n_, k_] := Permutations[PadRight[ConstantArray[1, k], n]]
In[72]:= function[4, 2]
Out[72]= {{1, 1, 0, 0}, {1, 0, 1, 0}, {1, 0, 0, 1}, {0, 1, 1, 0}, {0, 1, 0, 1}, {0, 0, 1, 1}}
In[73]:= function[3, 1]
Out[73]= {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}