0 レビュー
1 回答
php-ランダムな数と配列のプログラミングのアイデアを実装する
私は一般的にプログラミングに少し慣れていないので、最初にここで質問することをお勧めします。
つまり、6つの数字の約900セットがどこかに(おそらく配列に)格納されているとしましょう。毎回、他の900とは異なる6つの数字のランダムなセットを生成したいと思います。同じである場合(他の900で確認してください)、それを受け入れずに新しいものを生成します。アレイを使用して、毎回他のセットと新しいセットをチェックすることを考えましたが、以前に900個のアレイを使用するのは少し「苦痛」だと思います。
どんなアイデアでもいただければ幸いです。ありがとう!
わからない
0
レビュー
答え :
解決策:
正直なところ、私はあなたがこれを必要とするタスクを想像することができませんでした。 ))しかし、通常、ある種のセットの一意性を確保する必要がある場合は、hashesを使用します。
たとえば、次の構造の900個の配列があるとします。
$arr1 = [n1, n2, n3, n4, n5, n6];
$arr2 = [m1, m2, m3, m4, m5, m6];
...
そして、これらのいずれとも同じであってはならない別の配列が必要です。
解決策は、これらの配列をhashesと一緒に格納するためのメタ構造を作成することだと思います。のようなもの...
$arrayCollection = array(
hash($arr1) => $arr1,
hash($arr2) => $arr2,
...
);
次に、新しいセットが作成されると、そのhashも生成し、同じhashの要素がコレクションにすでに存在するかどうかを確認します。このように:
do {
$newArr = generateArray();
$newArrHash = hash($newArr);
} while (isset($arrayCollection[$newArrayHash]));
これらのセットを何度も比較するよりもはるかに高速です。 )
hash
関数については、次のように単純にすることができます...
function hash(array $arr){
return implode('|'、$arr);
}
...または、 $arrの場合、ダイジェスト関数にラップする必要がある場合があります(
には非常に大きな文字列/数字が含まれている場合があります。 md5($x, true)
は問題なく動作すると思います)。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。