« インターンシップ | メイン | なべなべ »

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

トラックバック

コメント