09/05/11 01:02:00
実は、PHPのスクリプトを考えていたのですが、
どうにもわからず、
これはむしろ数学的スキルを要求されるのでは、とおもい、質問させてください
====
$arrN[0] = $arrN[1] = $arrN[2] = $arrN[3] = $arrN[4] = array("2","3","4,"5","7","8","9", "a","f","h", "w");
がありまして。
「$arrN[0]からランダムに選んだ要素」.「$arrN[1]から…」.「$arrN[2]から…」.「$arrN[3]から…」.「$arrN[4]から…」.「$arrN[5]から…」
なる文字列を配列$arrPにどんどん入れていきたいです。
で、
$arrP のどの要素も重複を許可しないものとしたいです。
すると、$arrPの要素の個数は、($arrN[0]の要素の個数) ^ 5 = 161051となるわけです。
ですが、毎回(161051回)、5回ランダムに選んで、それが、すでに選んだ「$arrPの要素のどれか」と一致する場合は、再度繰り返す・・・ということをやっていると、
とてつもなく時間がかかってしまいます。
なんとかして、短時間で、これを実現する方法はないでしょうか?
なお、
この問題をもっと簡単にすると、
「0,1,2,3,.....9998,9999」なる整数の集まりに対して、これを、
ランダムに短時間で順番をシャッフルする・・・というようなことができれば、
希望のこともできそうなのですが。。。(たぶん・・・)
いいアイディアないでしょうか?
よろしくお願いします。