约束随机数生成

500*_*500 6 random wolfram-mathematica

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

trialNo=500

RandomSample@Flatten[Table[#, {trialNo/2}] & /@ {0, 1}]
Run Code Online (Sandbox Code Playgroud)

rco*_*yer 6

我实际上做了一些略有不同的事情.由于您正在寻找随机排列Flatten[{ConstantArray[0,250], ConstantArray[1,250]}],我会生成排列并用于Part获取您正在寻找的列表.如下,

perm = RandomSample[Range[trialNo]];
Flatten[{ConstantArray[0, trialNo/2], ConstantArray[1, trialNo/2]}][[ perm ]]
Run Code Online (Sandbox Code Playgroud)

这在操作上与你正在做的不同,但我认为它在数学上捕获了你想要更好地完成的事情.