我正在制作一种将用户组织成组的方法,并且需要一种检查它们的方法。例如,我有一种检查性别的方法,如果没有性别不平衡,则返回 true,如果存在则返回 false。我也有类似的方法来检查年龄分布和检查性别。对于这些方法中的每一种,我都有一个方法可以制作优化的组数组。
即我有一种基于性别优化组的方法。如果相应的检查返回 false,我只会调用其中一种方法。我遇到的问题是,当我根据特定标准(即性别)优化组时,新优化的组有可能搞砸了另一个检查标准。
例如,如果我检查年龄、性别和技能水平(我的第三次检查)并且发现年龄不平衡,则继续根据年龄优化组,那么我可能会弄乱性别或技能水平分布。我对这个问题的解决方案是,如果我能找到一种方法调用检查方法的所有变体并在检查所有方法返回 true 时中断(所有检查返回 true,所有组在年龄、性别和技能水平方面都有很好的平衡)。
例如:让 A、B 和 C 为检查方法,optimize_A、optimize_B、optimize_C 为优化组方法。我需要某种方式循环检查方法3!次(因为有 3 种检查方法,我需要运行 ABC、ACB、BAC、BCA、CAB、CBA)。或者,如果方法 check all () 返回 true(所有检查都返回 true,都具有良好的分布),我可以做一个 while 循环并中断,并在我运行所有检查方法的组合后中断。
谁能帮我解决这个问题?请记住,我是一名新手程序员,以前从未做过这样的事情。谢谢
编辑:
我怎么能在 php 中做类似这个 JavaScript 代码片段的事情?
var arr = [check1, check2, check3],
rand = Math.floor(Math.random() * arr.length),
func = arr[rand];
func();
这是我的尝试:
<?php
$checks_to_run = array('check_gender','check_age','check_skill_level');
$rand = floor(rand(0, count($checks_to_run) - 1));
$func = $checks_to_run[$rand];
echo $this->.$func.($tmp); // $tmp is an array of groups
?>