Dima85, в твоем варианте можно смело выкинуть переменную $i. И плюс к этому, я не понял, почему ты в запросе не написал условие на время? Покажи, что у тебя за запрос. Скорее всего, его можно оптимизировать.
И еще. Ты перезаписываешь переменную $win, используешь ее для совершенно разных целей. С технической точки зрения в этом нет проблемы, но это не совсем "красиво".
Я бы упростил твой код до такого (с учетом того, что в запросе сразу получаем только нужные строки)
while ($rows2 = mysql_fetch_assoc($rows)){
$arr[] = $rows2['CUser'];
}
$win = $arr[ rand(0,mysql_num_rows($rows-1) ) ];
Ключи массива $arr будут автоматически пронумерованы от 0 до (количество строк минус 1).
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)