约束随机数生成



我需要生成500个数字,250个1和250个0,随机分布。下面是我现在所做的。但是当输出是正确的时候,感觉就不对了。

trialNo=500
RandomSample@Flatten[Table[#, {trialNo/2}] & /@ {0, 1}]

我会做一些稍微不同的事情。由于您正在寻找Flatten[{ConstantArray[0,250], ConstantArray[1,250]}]的随机排列,我将生成该排列并使用Part来获得您正在寻找的列表。如下所示,

perm = RandomSample[Range[trialNo]];
Flatten[{ConstantArray[0, trialNo/2], ConstantArray[1, trialNo/2]}][[ perm ]]

这在操作上与你所做的没有什么不同,但我认为它在数学上更好地表达了你想要实现的目标。

还有另一种方法。

Round[Ordering[1~RandomReal~#] / N@#]& @ 500

现在有更多的神奇的家伙在聊天。

Mod[RandomSample@Range@#, 2] & @ 500

最新更新