この場合、array_rand()を探していると思います。配列から最大N個のランダムキーを選択し、それらを独自の配列に配置します。これにより、探していることを実行できるようになります。
$online_bots = array('4','5','6');
$bot_ids = array('1','2','3');
$random_bots = array_rand($bot_ids,1); // Random id from list
$bot_going_offline = array_shift($online_bots); // pop a bot from online
$online_bots[]= $bot_ids[$random_bots]; // add random bot from list
$bot_ids[] = $bot_going_offline; // move the oldest online bot into common pool
質問の2番目の部分については、変更をトリガーする1時間ごとにスクリプトを実行するようにcronを設定できます。または、オンライン/オフラインリストに、1時間ごとにランダムに選択されるボットの共通プールを作成することもできます。
$num_bots = rand ( 0, count($bot_ids));
$random_bots = array_rand($bot_ids,1); // Random id from list
for ($x = 0; X< $num_bots; x++)
$online[] = $bot_ids[$random_bots[$x]];