当前位置: 首页 > 知识库问答 >
问题:

如何用数学在Java中模拟60%的概率。随机的

龙俊德
2023-03-14

如果有60%的可能性,我想做点什么(只使用Math.random()。例如,数组中的每个值都有60%的几率被设置为1,否则为0。

我的困惑是我们是否应该检查一下

if (Math.random() < 0.6) { ... }

if (Math.random() <= 0.6) { ... }

我的想法是,它应该是第一个,因为0.0算作可能的返回值,但我想确认我应该使用哪一个,以及为什么。

共有2个答案

尉迟轶
2023-03-14

使用

孟海
2023-03-14

它取决于比较中真实值的最接近的近似值。

虽然这是一种简化,但是考虑到计算机通过添加表单2(SUP> -N)的术语来存储浮点数。因此,大多数真实值无法准确表示。

编译器将您的文字0.6转换为最近的值,在本例中,该值已经小于0.6。为了尽可能在60%的时间内满足您的条件,请使用Math.random()

将其与0.4的操作数进行对比。这里,最接近的double值实际上大于0.4。

最后,考虑一个可以精确表示的操作数,比如0.5。这就是零的重要性。如果您使用

总之,如果将操作数调整到更高的值,

对于按原样使用或向下调整的值,您希望使用

如果您能够使用类似于nextInt(),那么很明显,您的表达式将使用

我建议你坚持

 类似资料:
  • 我想知道(例如在Java中)在特定范围内生成随机数的最佳方法是什么,其中每个数都有一定的发生概率? e. g. 从[1;3]中生成概率如下的随机整数: P(1)=0.2 P(2)=0.3 P(3)=0.5 现在,我正在考虑在[0;100]范围内生成一个随机整数的方法,并执行以下操作: 如果在[0; 20]以内--

  • 问题内容: 我想知道在特定范围内生成随机数的最佳方法(例如在Java中)是什么,而每个范围内的每个数字都有一定的发生概率? 例如 从[1; 3]内产生随机整数,并具有以下概率: P(1)= 0.2 P(2)= 0.3 P(3)= 0.5 现在,我正在考虑在[0; 100]内生成随机整数并执行以下操作的方法: 如果它在[0; 20]之内->我得到我的随机数1。 如果它在[21; 50]之内->我得到

  • 我正在尝试创建一个具有以下签名的函数: 它应做到以下几点: 生成从0到1的随机数,但不包括1 在该范围内选取任何给定数字的概率不是均匀分布的 选择的数字接近目标值的可能性更大(目标值也是从0到1的值) 概率曲线看起来像钟形曲线,目标值的概率最高,其周围的值逐渐变小,但0到1范围内的所有值仍有机会被选中。 这个机会的权重可以用概率值来调整,其中0表示没有对随机性施加权重,1表示几乎所有选择的数字都将

  • 随机变量的函数 在前面的文章中,我先将概率值分配给各个事件,得到事件的概率分布。 通过事件与随机变量的映射,让事件“数值化”,事件的概率值转移到随机变量上,获得随机变量的概率分布。 我们使用随机变量的函数,来定制新的随机变量。随机变量的函数是从旧有的随机变量到一个新随机变量的映射。通过函数的映射功能,原有随机变量对应新的随机变量。通过原有随机变量的概率分布,我们可以获知新随机变量的概率分布。事件,

  • 主要内容:实例,实例,概率分布,实例,实例,实例,实例,实例,实例,实例,数据分析,实例,实例,实例随机数 Verilog 中使用系统任务 $random(seed) 产生随机数,seed 为随机数种子。 seed 值不同,产生的随机数也不同。如果 seed 相同,产生的随机数也是一样的。 可以为 seed 赋初值,也可以忽略 seed 选项,seed 默认初始值为 0。 不使用 seed 选项和指定 seed 并对其修改来调用 $random 的代码如下所示: 实例     //seed va

  • 我有下面的数组 这将给出主要结果为,而不是。 总价值是100%概率。数值可以是十进制,也可以是55.55、10.10等,但总的来说是100% 我已经跟踪https://www.geeksforgeeks.org/how-to-get-random-value-out-of-an-array-in-php/ 但这并没有给出预期的完美结果。 所以哪个概率最高应该主要随机选择。 所以结果可以是这样的:5