2 回答
TA贡献1770条经验 获得超3个赞
另一种可能的实现
<?php
$classAPossibleOccuences = [0,1];
$classARandomChosenOccurence = $classAPossibleOccuences[array_rand($classAPossibleOccuences)];
$classBPossibleOccuences = [3,6];
$classBRandomChosenOccurence = $classBPossibleOccuences[array_rand($classBPossibleOccuences)];
$classEPossibleOccuences = [0,2];
$classERandomChosenOccurence = $classEPossibleOccuences[array_rand($classEPossibleOccuences)];
$classFPossibleOccuences = [0,1];
$classFRandomChosenOccurence = $classFPossibleOccuences[array_rand($classFPossibleOccuences)];
$generatedRandomClassesArr = [];
if($classARandomChosenOccurence) {
$generatedRandomClassesArr[] = 'class-A';
}
if($classFRandomChosenOccurence) {
$generatedRandomClassesArr[] = 'class-F';
}
for($i = 0; $i < $classBRandomChosenOccurence; $i++) {
$generatedRandomClassesArr[] = 'class-B';
}
if($classERandomChosenOccurence) {
for($i = 0; $i < $classERandomChosenOccurence; $i++) {
$generatedRandomClassesArr[] = 'class-E';
}
}
while(sizeof($generatedRandomClassesArr) < 12) {
$randomCOrD = ['C','D'];
$randomClass = $randomCOrD[array_rand($randomCOrD)];
$generatedRandomClassesArr[] = 'class-' . $randomClass;
}
//randomize array elements
shuffle($generatedRandomClassesArr);
highlight_string("<?php\n\$generatedRandomClassesArr =\n" . var_export($generatedRandomClassesArr, true) . ";\n?>");
echo '<br><br>';
highlight_string("<?php\n\$countValues =\n" . var_export(array_count_values($generatedRandomClassesArr), true) . ";\n?>");
?>
检查工作演示
TA贡献1963条经验 获得超6个赞
我在这里实现了一个工作演示,它必须满足你的所有规则
<?php
$randomClassesArr = [];
while (sizeof($randomClassesArr) <= 12) {
$letter = chr(rand(65,70));
$classLetter = 'class-' . $letter;
if($letter === 'A' || $letter === 'F') {
if(!in_array($classLetter, $randomClassesArr)) {
$randomClassesArr[] = $classLetter;
}
} elseif($letter === 'B') {
$occurences = array_count_values($randomClassesArr);
$classBOccurence = $occurences[$classLetter] ?? 0;
if($classBOccurence !== 3) {
$randomClassesArr[] = $classLetter;
}
} elseif($letter === 'E') {
$occurences = array_count_values($randomClassesArr);
$classEOccurence = $occurences[$classLetter] ?? 0;
if($classEOccurence !== 2) {
$randomClassesArr[] = $classLetter;
}
} else {
$randomClassesArr[] = $classLetter;
}
}
highlight_string("<?php\n\$randomClassesArr =\n" . var_export($randomClassesArr, true) . ";\n?>");
echo '<br><br>';
highlight_string("<?php\n\$countValues =\n" . var_export(array_count_values($randomClassesArr), true) . ";\n?>");
?>
在此处查看工作演示,并随时在其之上进行编辑。
- 2 回答
- 0 关注
- 51 浏览
添加回答
举报