« インターンシップ | メイン | なべなべ »
2005年01月04日
配列に入ったアドレスをばらばらに
巡回する URL が @url に入っていた場合、どうすればこの配列の中に入っている URL の順序を、ドメインごとに偏らないように並び替えることができるだろうか。
ん?分かりにくいって?要は、前から順にクロールしたとき各ドメインに対して、なるべく連続アクセスにならないように、上手く並び替えるってこった。
色々議論を重ねた結果。某相談役(専務?)の発案がすばらしいと思った。まぁ。自分で気づけよ。ってな話でもあるんだけど。
1. 各要素の先頭にランダムな文字列を○文字を入れる
2. sort @url;
3. 各要素から先頭○文字を除く
乱数を先頭に入れてソートすることにより、配列の中身をシャッフルするってこった。うまいなぁ。
以下のようにすると、より偏り無く並び替えることが出来ると思う。計算コストが高くなるんだけど。
1. ドメインごとの URL の数を数える
2. 多いドメインから順に URL を等間隔で配列に入れなおす
3. $url[$i] に要素が存在するときは $url[$i + 1] に入れる
(1つ目のドメインの先頭は $url[0] なので、2つ目のドメインの先頭は $url[1] になる)
でも、実装してないから、上手く行くかどうかわかんないw
2005年01月04日 14:44 | Programming