Ich muss zufällige, eindeutige Zahlen innerhalb eines bestimmten Bereichs generieren. Wie kann ich das tun? Ich kann Zufallszahlen generieren mit
generator: $arr = []; $x = rand($min, $max); $len = count($arr); $flag = 0; for($i = 0; $i < $len; $i++) { if ($flag === 1) goto generator; if ($x === $arr[$i]) $flag = 1; } $arr[$index] = $x; $index++; goto generator;
Ich weiß, dass dieser Code schrecklich ist, deshalb muss ich meine Version besser optimieren! helfen!
Beispiel: Wenn ich 3 Zahlen zwischen 1 und 15 generieren muss, sollten sie wie 5, 9, 1 sein, aber nicht 3, 1, 2 [in 1 - 3 (die Zahlen, die ich generieren möchte)]
我很想知道已接受的答案与我的答案有何不同。值得注意的是,两者的混合可能是有利的;事实上,这是一个根据某些值有条件地使用其中一个的函数:
结果:
如果您使用较小的范围和较高的返回值数量,则接受的答案肯定是最佳的;然而,正如我所预期的那样,更大的范围和更小的计数将需要更长的时间来接受答案,因为它必须存储范围内的每个可能的值。您甚至冒着超出 PHP 内存上限的风险。评估范围和计数之间的比率并有条件地选择生成器的混合体将是两全其美的。
具有随机顺序的数字范围的数组:
封装函数:
示例:
结果: