Random 约束随机数生成

Random 约束随机数生成,random,wolfram-mathematica,Random,Wolfram Mathematica,我需要生成500个数字,250个1和250个0,随机定位。下面是我现在做的。但是当输出正确时,它感觉不正确 trialNo=500 RandomSample@Flatten[Table[#, {trialNo/2}] & /@ {0, 1}] 我会做一些稍微不同的事情。由于您正在寻找一个随机排列的plant[{ConstantArray[0250],ConstantArray[1250]}],我将生成排列并使用Part获得您要查找的列表。如下: perm = RandomSample

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

trialNo=500

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

我会做一些稍微不同的事情。由于您正在寻找一个随机排列的
plant[{ConstantArray[0250],ConstantArray[1250]}]
,我将生成排列并使用
Part
获得您要查找的列表。如下:

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

这在操作上与您正在做的并没有什么不同,但我认为它从数学上抓住了您想要更好地完成的任务。

这里是另一种方法

Round[Ordering[1~RandomReal~#] / N@#]& @ 500
现在有了更多的魔法


事实上,这似乎是一个最佳的方法(对我来说无论如何),没什么错。你可能对Wolfram Research最近关于随机数生成的问答项目感兴趣:@Leonid,我真诚地认为这是我Mathematica旅程中的重要一步;-)我同意莱昂尼德的观点,现在一切都很好。尽管如此,这里还是有一个合理的选择。剪辑[RandomSample[Range[trialNo]],{trialNo,trialNo}/2+.5,{0,1}]既然你的方法写得很好,请提交一个答案,并接受它。你比我快了10秒!事实上,我发现原来OP的代码完全正确,所以我删除了我的答案(看起来这已经成为一种习惯)@LeonidShifrin,他的答案肯定有效。“我只是觉得它在数学上可能更清晰,如果不是在程序上与众不同的话。”也许是这样。不知何故,我第一次认为原始代码根本不起作用,在发布了我的答案后,我意识到了相反的情况。。。我刚打完评论,你就赶上了。不酷
。必须开始“取消投票”操作。谢谢,希望您一切顺利!好久没见到你了@不客气,谢谢你,我很好,只是最近忙着其他事情。您自己针对这个问题编写的代码非常好,我看不出有任何理由对其进行更改。这仅仅是值得学习的东西,你看起来做得很好。好吧,你赢了。这是一种生成随机排列的非常聪明的方法,保证0和1的数量相等。你已经从我这里得到了+1。你只是想得到更多的分数!:)
Mod[RandomSample@Range@#, 2] & @ 500