我一般是编程新手,我发现先在这里问是个好主意。
所以,假设我有大约 900 组 6 个数字存储在某个地方(也许在数组中?)。我希望每次生成一组随机的 6 个数字,与其他 900 不同。如果相同(与其他 900 核对),则不要接受它并生成一个新的。我想过使用数组,每次都和其他人一起检查新的集合,但我认为之前有 900 个数组有点“痛苦”。
任何想法,将不胜感激!谢谢!
老实说,我无法想象你需要这个来完成的任务。)) 但是通常当您需要确保某种集合的唯一性时,您会使用哈希。
例如,假设我们有 900 个数组,其结构如下:
$arr1 = [n1, n2, n3, n4, n5, n6];
$arr2 = [m1, m2, m3, m4, m5, m6];
...
我们需要另一个数组,它不应该和这些数组一样。
我认为,解决方案是创建一个元结构,将这些数组与其哈希一起存储。就像是...
$arrayCollection = array(
hash($arr1) => $arr1,
hash($arr2) => $arr2,
...
);
然后,当创建一个新集合时,我也会生成它的散列 - 并检查我的集合中是否已经存在具有相同散列的元素。像这样:
do {
$newArr = generateArray();
$newArrHash = hash($newArr);
} while (isset($arrayCollection[$newArrayHash]));
它会非常快,比一次又一次地比较这些集合要快得多。)
至于hash
功能,可以很简单...
function hash(array $arr) {
return implode('|', $arr);
}
...或者您可能需要将它包装到一些摘要函数中(md5($x, true)
我想会很好),如果$arr
可能包含一些非常大的字符串/数字。