php - 从百分比计算发生的事件
问题描述
我找不到任何答案,所以我在这里问。
如何根据百分比计算是否应触发事件?
让我解释。
假设一个事件发生的概率为 30%。
当我运行脚本(调用函数)时,我如何知道该事件是否属于 30%?
基本上,最后,我必须从函数中返回 true 或 false。
希望你明白我的意思。
我有自己的解决方案,但我认为这是不正确的:
$evasion_percent = 30;
$did_evasion = false;
$my_evasion_number = mt_rand(0,100);
if ($my_evasion_number <= $evasion_percent) {
$did_evasion = true;
}
return $did_evasion;
谢谢。
解决方案
你需要从 1 到 100 随机,而不是从 0 到 100,其余的看起来都很好。
<?php
function trigger_event($percent) {
$did_evasion = false;
$my_evasion_number = mt_rand(1, 100);
if ($my_evasion_number <= $percent) {
$did_evasion = true;
}
return $did_evasion;
}
您还可以尝试大量调用(1000、100000 甚至更多),并查看触发事件的一部分如何接近您的百分比:
$evasion_percent = 30;
$m = 0;
for($n = 1; $n <= 1000; $n++) {
$m += trigger_event($evasion_percent) ? 1 : 0;
}
echo $m / $n * 100;
推荐阅读
- sql-server - Sql Server存储过程对临时表的重复操作
- xamarin - 使用自定义渲染器在 xamarin 表单中可见或启用时自动聚焦条目
- python - Python - 计算字典值中整数的平均值(嵌套列表)
- bash - echo 命令在 shell 脚本中运行时无法正确打印花括号
- php - 错误 404。在 nopCommerce 4.00 中找不到请求的页面 (/en/index.php)
- sql - 在 SQL 中从 XML 获取值时返回 null
- mysql - 获取表中不可用的数据
- react-native - ReferenceError:文档未定义(世博会)
- android - 我的应用或其依赖项是否违反了 Android 广告 ID 政策?
- ms-access-2010 - 在 ms access 2010 中添加验证