gpt4 book ai didi

java - 概率超过 100% 的算法

转载 作者:搜寻专家 更新时间:2023-11-01 04:04:35 25 4
gpt4 key购买 nike

我需要一种算法(在 Java 中,但理论应该非常通用)来处理某种概率……事情。我什至不知道该怎么调用它,这就是为什么我在谷歌搜索上一无所获。

为了描述得更好一点,我有一个任务需要在函数被调用时完成 X 次。有时,这种情况发生的几率只有十分之一,这意味着(大约)每调用该函数十次中就有一次该任务将实际执行 - 使用 random() 很容易做到。有时它会是 10 分之 2,甚至可能是 10 分之 10。仍然很简单,有条件的直接,即使它并不总是“10 分之 X”

问题是,它的几率可能大于 1 比 1。它可能是 10 分之 15 - 一半时间运行一次,其余时间运行 两次。或 10 in 5,每次调用时它运行两次(大约)。如您所见,这现在已经脱离了简单的不等式检验。

所以,我正在寻找的是一些基于随机数的算法,该算法将根据运行频率(10 分之一、200%、0.75,无论格式如何)返回一个运行 count ) 应该发生一些事情。如果有人可以提供任何关于此的线索 - 例如,也许是要搜索的实际术语 - 将不胜感激!

编辑:难怪我找不到很多结果,每个人都和我一样困惑!

首先,没有真正的“最大值”值。没有正式定义。如果算法可以从它接收到的概率值中提取它,那就太好了。

它也绝对需要是随机的,这使得它本质上是不完美的。如果抛硬币 10 次,很可能会出现 8 次正面朝上,尽管理论上应该是完全均匀的!没关系。事实上,这就是重点。

我可以告诉你为什么我需要它...但这会违反适当的面向对象的模块化实践:) 外部各方只需要知道接口(interface);它接受一个值(可能是一个 float ,“0.75”似乎效果最好)并返回一个 int。如果您以五分之一的概率调用它 100 次,则其返回值的总和应平均为 20。

最佳答案

根据您所说的,您可以使用平均值为X 的几乎任何 离散概率分布来选择重复次数。

我特别推荐 Poisson distribution [*] 的平均值为 X,因为它模拟了任何给定窗口中的事件数量,当事件在较长时间内独立均匀分布时。因此,它具有“可扩展”[**] 的属性:您可以将 X 除以 2,以两倍的频率运行您的操作,并且您基本上仍然有相同的事件模式。

如果您并不真正关心分布,您只想要正确的事件发生率,那么在相反的极端情况下,您可以使用完全非随机的算法。保持从 0 开始的累积“进位值”。然后在每次迭代中将 X 添加到进位值,返回整数部分并结转小数部分。当然,这使得 8/10 正面成为不可能。

[*] 遗憾的是这个名字不是,因为它是垂钓者在单位时间内捕获的鱼数的分布。

[**] 也与鱼无关。

关于java - 概率超过 100% 的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14502947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com