基于0% - 100%频率阈值确定是否为真的算法

时间:2014-07-27 03:02:58

标签: objective-c algorithm

很抱歉,如果这是一个重复的问题。我做了一个搜索,但不确定要搜索什么。

我正在编写执行扫描的应用。扫描完成后,我们需要确定是否找到了某个项目。是否找到该项目取决于用户可以设置的阈值:0%的时间,25%的时间,50%的时间,75%的时间或100%的时间。

显然,如果用户选择0%或100%,我们可以使用真/假但是频率,但我在其他阈值的工作原理上留下了空白。

我认为每次发现怪物时我都需要存储并增加一些值。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

生成0到100之间的随机数。如果该数字大于阈值,则找到一个项目。否则,找不到任何项目。

答案 1 :(得分:0)

正如@nix指出的那样,听起来你想要根据你想要“找到”某事物的时间百分比来生成随机数和阈值。

您需要注意选择的范围以及阈值如何达到所需的结果以及您使用的随机数生成器的分布。在处理百分比时,一种显而易见的方法是生成100个均匀分布的选项中的1个和适当的阈值,例如0-99并检查该数字是否小于您的百分比。

快速检查显示,您永远不会得到小于0的数字,因此0%达到预期结果,您将始终得到小于100的数字,因此100%达到预期结果,并且有50个选项(0- 49)100个选项中少于50个(0-99),因此50%也达到了预期的结果。

一种略有不同的方法,假设用户只能以25%的增量选择范围,将生成0-3范围内的数字,如果数字小于/ 25,则返回True。如果你是将用户选择存储为0-4(0:0%,1:25%.. 4:100%)中的数字,这可能更简单。

这里讨论了Objective-C中伪随机数生成的各种方法:Generating random numbers in Objective-C

请注意,根据您使用的方法,可能会提到可能对范围敏感的随机数的均匀性。

要确信您可以通过多次调用您的函数来进行一些直接测试,跟踪它返回true的次数并将其与所需的百分比进行比较。