ユーザーをグループに編成する方法を作成しており、それらを確認する方法が必要です。たとえば、性別を確認するメソッドがあります。性別の不均衡がない場合は true を返し、ある場合は false を返します。年齢分布を確認する方法と性別を確認する方法も同様です。これらの方法のそれぞれについて、グループの最適化された配列を作成する方法があります。
つまり、性別に基づいてグループを最適化する方法があります。それぞれのチェックで false が返された場合にのみ、これらのメソッドの 1 つを呼び出します。私が直面している問題は、特定の基準、つまり性別に基づいてグループを最適化すると、新しく最適化されたグループが別のチェック基準を台無しにする可能性があることです。
たとえば、年齢、性別、およびスキル レベルをチェックし (3 回目のチェック)、年齢に不均衡があることがわかった場合、年齢に関してグループを最適化すると、性別またはスキル レベルの分布が台無しになる可能性があります。この問題に対する私の解決策は、check メソッドのすべてのバリエーションを呼び出し、check all メソッドが true を返した場合に中断する方法を見つけることができた場合 (すべてのチェックが true を返し、すべてのグループが年齢、性別、スキルレベルのバランスが取れていること) でした。
例: A、B、および C をチェック メソッドとし、optimize_A、optimize_B、optimize_C を最適化グループの作成メソッドとします。チェックメソッドを何らかの方法でループする必要があります 3! 回 (3 つのチェック方法があり、ABC、ACB、BAC、BCA、CAB、CBA を実行する必要があるため)。または、while ループを実行して、メソッド check all () が true を返す場合 (すべてのチェックが true を返し、すべてが適切な分布を持っている) を中断し、check メソッドのすべての組み合わせを実行したら中断することもできます。
誰でもこの問題を解決できますか? 私は初心者のプログラマーであり、これまでにこのようなことをしたことがないことに注意してください。ありがとう
編集:
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
?>