Показать сообщение отдельно
Старый 14-01-2008, 03:00   #16
RR_Joy
불친절한 한국어 사기꾼™ True хохол
Администратор
 
Аватар для RR_Joy
 
Регистрация: Jul 2004
Адрес: 54°43' с.ш. 20°30' в.д.
Сообщений: 7,247
Цитата:
Сообщение от RR_Spiro Посмотреть сообщение
Однако ИМХО процедура выборки самолета должна быть примерно такой:

Код:
def select_plane(queue):
        count=0
        for n in range(len(queue)):
                count+=queue[n]

        rnd = random.randint(1, count)

        next=0
        for n in range(len(queue)):
                if next > rnd:
                        return n
                else:
                        next+=queue[n]

        return n
В queue передается список количества самолетов, что-то типа:

queue = [90, 2, 1, 5, 1, 1]

Но выходе получаем индекс самолета. В данном случае функция почти всегда будет возвращать 1 (кол-во 90, т.е. самый распространенный самолет).

Вот результат прогона после 100 вызовов:
1 1 1 1 1 2 1 1 5 1 1 1 1 1 5 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 1 1 1 1 4
1 5 1 1 1 1 1 5 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1
1 4 2 1 1 1 1 1 1 1 5 1 1

P.s. написано на Питоне, из-за отсутствия Перла дома, на работе переведу
Нуна на перле
__________________
DAAAAAAHHHH!!!
Админ, прежде всего - Царь и Бог, а потом уже читак и п***рас © bash.org.ru

RR_Joy вне форума   Ответить с цитированием