具有 10 个元素的随机布尔数组,其中 10 个元素中有 3 个为真 [重复]
Posted
技术标签:
【中文标题】具有 10 个元素的随机布尔数组,其中 10 个元素中有 3 个为真 [重复]【英文标题】:Random Boolean array with 10 elements where 3 out of 10 are True [duplicate] 【发布时间】:2017-07-06 18:49:29 【问题描述】:我一直在论坛和谷歌上搜索,但我认为我使用了错误的关键词或者我不明白解决方案。我正在寻找的是创建一个包含 10 个随机布尔元素的列表或数组,我可以在其中确定 1 个或 2 个或 3 个或 4 个等元素为真。顺序必须是随机的,最后我想要这样的结果,例如(0.3 几率):
False
True
False
False
True
False
False
False
True
False
谢谢。
【问题讨论】:
您可以使用下面的代码。我没有运行它,但应该可以工作。请导入 System.Random。 boolean[] randomBooleanArray(int len) boolean[] arr = new boolean[len];随机 rand = new Random(); for(int i = 0; i 0.5; 返回 arr; @Egalitarian 这并不能确保true
只出现三次。
【参考方案1】:
为什么不按已知顺序(真、真、真、假、...)创建它们,然后使用好的算法来打乱它们?
一个选项是旧的Fisher-Yates shuffle
【讨论】:
问的不一样。 @Egalitarian 这个问题与我的建议有何不同?结果正是 OP 所要求的:具有 N 个true
值的随机列表。我只是建议采取两个步骤来创建它。以上是关于具有 10 个元素的随机布尔数组,其中 10 个元素中有 3 个为真 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
VB程序设计,用随机函数产生10个50以内(包括50)的随机整数存入一维数组。求出最大值并和数组中的首个