我需要随机定位生成500个数字,250个1和250个0。以下是我现在所做的事情。但输出正确时感觉不对。
trialNo=500
RandomSample@Flatten[Table[#, {trialNo/2}] & /@ {0, 1}]
答案 0 :(得分:6)
我实际上做了一些略有不同的事情。由于您正在寻找Flatten[{ConstantArray[0,250], ConstantArray[1,250]}]
的随机排列,因此我会生成排列并使用Part
来获取您正在寻找的列表。如下,
perm = RandomSample[Range[trialNo]];
Flatten[{ConstantArray[0, trialNo/2], ConstantArray[1, trialNo/2]}][[ perm ]]
这与您正在进行的操作不同,但我认为它可以在数学上捕获您尝试更好地完成的任务。
答案 1 :(得分:3)
这是另一种方法。
Round[Ordering[1~RandomReal~#] / N@#]& @ 500
带来更多魔力
Mod[RandomSample@Range@#, 2] & @ 500