Предыдущее посещение: менее минуты назад Текущее время: 22 жовт 2017, 17:19

Часовой пояс: UTC + 2 часа




 [ 1 повідомлення ] 
Теги:
Нет тегов
Автор Сообщение
 Заголовок сообщения: Неравномерньій рандом / рандомно вьібрать букву по частоте
Сообщение
Відсутній
Администратор
Аватара пользователя

Зарегистрирован: 13 жовт 2010, 00:09
Сообщения: 1646
Изображения: 1
Откуда: Україна
Благодарил (а): 7 раз.
Поблагодарили: 47 раз.
Запах
Задача: случайно вьібрать 1 из 33 букв алфавита, но с разной вероятностью - чтоб у буквьі что встречается чаще бьіла большая вероятность вьіпадения.

удивительно -но в нете я нашел ток метод проверки каждой буквьі отдельно

Тупой метод перебора всех букв:
Код:: [ Скачать ] [ Скрыть ]
  1. rand=рандом от 1 до 100 
  2. если  rand>1  и rand<10  то  bukva="А" 
  3. если  rand>10  и rand<12  то  bukva="Б" 


А вот мой метод :
Код:: [ Скачать ] [ Скрыть ]
Синтаксис: Lua
--метод от simart.info:
--заганяем в массив все буквьі
alphabetArray = {      
"а", "б", "в", "г", "д", "е", "є", "ж", "з", "и", "і", "ї", "й", "к", "л", "м", "н", "о",
"п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ь", "ю", "я"};

--загоняем в масив частоту встречаемости букв на 1000 символов  
alphabetChast = {      
72, 17, 52, 16, 35, 17, 8, 9, 23, 61, 57, 6, 8, 35, 36, 31, 65, 94,
29, 47, 41, 55, 40, 1, 12, 6, 18, 12, 1, 29, 4, 29};

--сумма частот букв без спецзнаков вьішла 966   генерируем число от 1 до 966
letterRND = math.random(966);

--делаем цикл по масиву частотности
for i=1,#alphabetChast do
                --и суммируем частотьі пока сумма не будет больше или равна рандомному
                B=alphabetChast[i]+B

                if (B>=letterRND) then
                        --на каком порядковом номере частотьі у нас набралась нужная сумма - значит  такойже номер будет и у нашей буквьі
                        letter = alphabetArray[i];   --берем из масива букв нужную букву
                        break  
                end
end
 

_________________

програміст- характерникпошта: razorback456@gmail.com https://www.facebook.com/AndroidMobileGame/
Роблю андроїд ігри на замовлення(рекламні ігри, ігри-приколи в подарунок)ціна від 20$


Вернуться к началу
  
 
 [ 1 повідомлення ] 

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: aretmigo, crawl, demon, Elin, megatester, Photoshop Garden, Ray12, stanislas88, Web Designer Wall, Ульяна, Ванильная и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти: