约束随机数生成

时间:2011-10-12 15:17:31

标签: random wolfram-mathematica

我需要随机定位生成500个数字,250个1和250个0。以下是我现在所做的事情。但输出正确时感觉不对。

trialNo=500

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

2 个答案:

答案 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

现在为the guys in Chat.

带来更多魔力
Mod[RandomSample@Range@#, 2] & @ 500