gpt4 book ai didi

android - 以编程方式处理事件百分率的有效方法

转载 作者:太空宇宙 更新时间:2023-11-04 02:50:28 25 4
gpt4 key购买 nike

我正在开发一个像游戏这样的小应用程序,我以前做过这个,但仍然不确定这是否是正确的方法。我需要的是某些事件的百分率机会,例如赢得 10% 机会后获得元素。

我每次都在服务器端使用随机数生成器,如果数字 <= 10 那么用户将获得奖励,但它仍然不满足所有用户环境中的 10% 标准。

我正在考虑在服务器端记录用户的轮次并每n次奖励一个项目,但不知道这是否是正确的方法。我想了解一下您的做法和建议。另外,我不知道 stackoverflow 是否适合发布此内容或 stackexchange 组的任何其他社区。如果是这样,请在评论中指导我,我会将问题移至适当的社区。谢谢。

最佳答案

您在问题中提到了两件完全不同的事情。您必须决定想要哪一个,因为给定的算法无法同时完成这两者。

  1. 每次尝试,都有 10% 的机会。您可能会看到它连续击中两次,然后可能会尝试 200 次都没有击中。但从长远来看,它的成功率只有 10%。

  2. 您保证每 10 次尝试,它只会命中一次,不会多也不会少。

上面的第一个只要适当的随机数选择和比较就可以了。但是,您会连续获得比预期更多的点击次数和比预期更少的点击次数。随着时间的推移,平均点击次数将是你的 10%。

function getRandomTenPercentOutcome() {
return Math.random() < 0.1;
}

第二个需要更复杂的实现,它将随机生成器与跟踪最近的事件结合起来。实现保证十分之一命中的最简单方法是让服务器创建一个填充零的数组,然后随机选择数组中的一个单元格并将其更改为 1。

然后,当您需要选择一个随机结果时,您可以 .shift() 删除数组中的第一项并使用该值。当数组变空时,您将创建一个新数组。这迫使十分之一的结果(从一开始)发生。当您跨越创建新数组的边界时,任何给定的 10 个结果都可能有 2 或 0,但不会比这更远。

您可以将数组设置为系统范围(所有用户都有一个数组)或每个用户(每个用户都有自己的结果数组)。如果您希望每个用户都认为这对于他们个人来说非常接近十分之一,那么您需要为每个用户创建一个单独的结果数组。

可以调整数组的长度来控制允许的差异量。例如,您可以创建一个长度为 50 的数组,并在数组中随机选择 5 个单元格。这将允许 50 内有更多的变化,但仍然会迫使 50 内有 5 个命中。

<小时/>

从长远来看,这两种方法的平均效率都是 10%。第一个在任何给定间隔内可能与 10% 有更大的偏差,但会更加随机。第二个与 10% 的偏差要小得多,但有些人会说它的随机性较小(这不一定是坏事 - 取决于您的目标)。两者都是“公平的”。

我从我儿子的游戏中知道,当一系列不可能的事情发生时,他会认为事情是“不公平的”,即使这种连续发生完全在一系列随机事件偶尔预期的结果之内。因此,有时,由于真正随机偶尔具有零星的性质,真正的随机对参与者来说似乎并不公平。

关于android - 以编程方式处理事件百分率的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43882544/

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