|
Основоположник на всё
44 / 44 / 3
Регистрация: 22.02.2010
Сообщений: 362
|
|
Как подсчитать вероятность?06.07.2011, 19:57. Показов 4092. Ответов 42
Метки нет (Все метки)
Доброго времени суток.
Сделал программу, изменяющую фон рабочего стола ВыньДос на случайный файл из указанной директории. Сколько в ней файлов неизвестно. Может 1000000, а может 1. Решил сэкономить на памяти и выбрать случайный файл за один проход - первый файл запоминается с вероятностью 1 к 1, второй - 1 к 2, третий 1 к 3 и т.д. пока файлы не кончатся. Последний запомненный и есть выбранный. Сделал, а теперь жаба давит: у всех ли файлов одинаковая вероятность выбора? Подскажите, пожалуйста, как считать вероятность? Всю башку сломал... Не ругайтесь, знаю, что в школе надо было учиться, но поздно пить боржоми... Заранее спасибо. Добавлено через 11 минут Проблема решилась, удалите тему плз. n-й файл - очевидно P = 1/n (n-1)-й - это когда он выбран, а n-й - нет. P = (1/(n-1)) * (1 - 1/n) = 1/n (n-2)-й - это когда он выбран, а (n-1)-й и n-й - нет. P = (1/(n-2)) * (1 - 1/(n-1)) * (1 - 1/n) = 1/n и т. д. Вроде одинаковая получается.
0
|
|
| 06.07.2011, 19:57 | |
|
Ответы с готовыми решениями:
42
Как подсчитать вероятность появления каждого символа в тексте. Подсчитать вероятность броска монеты
|
|
Основоположник на всё
44 / 44 / 3
Регистрация: 22.02.2010
Сообщений: 362
|
|
| 09.07.2011, 11:50 [ТС] | |
|
Так мы же при проходе, когда проверяем вероятность, уже имя запоминаем!? И более ничего не нужно уже.
Считать количество файлов, что бы генерить случайное число от 0 до n, это один хлостой проход! Мой вариант: Первый файл мы запоминаем с вероятностью 1 к 1, второй 1 к 2, третий 1 к 3 и т.д. до конца. Последний, который запомнили, и есть тот самый случайный. Если вероятности одинаковые, то зачем лес городить? Скажите, чем такой подход плох? Код, к сожелению, на ассемблере, там что смотреть? Дело не в коде а в ИДЕЕ!!!
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
|
||
| 09.07.2011, 11:53 | ||
|
C:\dir1\dir2\file.xz FindFirstFile/FindNextFile выдает в этом формате
1
|
||
|
4 / 4 / 0
Регистрация: 19.01.2011
Сообщений: 26
|
||
| 09.07.2011, 11:55 | ||
|
1
|
||
|
Основоположник на всё
44 / 44 / 3
Регистрация: 22.02.2010
Сообщений: 362
|
|
| 09.07.2011, 11:56 [ТС] | |
|
Есть константа MAX_PATH называется, она и содержит максимально допустимую длину имени файла вместе с путем.
Vitam1n, вычислений меньше - не согласен, а работы с тормозным жестким диском в 1,5 раза в среднем меньше это точно!
0
|
|
|
4 / 4 / 0
Регистрация: 19.01.2011
Сообщений: 26
|
|||||
| 09.07.2011, 11:59 | |||||
|
Добавлено через 48 секунд Добавлено через 32 секунды Добавлено через 21 секунду
0
|
|||||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
|
||||||
| 09.07.2011, 12:01 | ||||||
|
и вероятности надо будет править у всех файлов напиши на псевдо коде или блок схему?? ты создаешь тот же список но так чтоб враги не дагадались
0
|
||||||
|
4 / 4 / 0
Регистрация: 19.01.2011
Сообщений: 26
|
||
| 09.07.2011, 12:01 | ||
|
по моему алгоритму нужно 100500 раз итераций (элементарная операция) и одно деление.
0
|
||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
|
|
| 09.07.2011, 12:06 | |
|
0
|
|
|
Основоположник на всё
44 / 44 / 3
Регистрация: 22.02.2010
Сообщений: 362
|
|
| 09.07.2011, 12:08 [ТС] | |
|
Вот алгоритм, а то уже передрались все
![]() Ищем первый файл Цикл Проверяем расширение Если подходит то Count++ Генерим случайное число Делим его на Count Если остаток 0 то Запоминаем имя и путь КонецЕсли КонецЕсли Ищем следующий файл КонецЦикла Список не создается. Просто новое имя сохраняется поверх старого. И фсе...
1
|
|
|
4 / 4 / 0
Регистрация: 19.01.2011
Сообщений: 26
|
||
| 09.07.2011, 12:15 | ||
эм..10кб ехе. точна асм? ) дык если сгенерируется 12345, а каунт будет равен 1, то при делении остаток будет равен 0 и путь сохраниться. толк от вычислений. алгоритм в целом неудачный. имхо. уже человек 10 говорят вам как надо было делать. 1 делим на общее количесто = вероятность выбора одного файла у каждого файла из всех. нужный файл узнаем = rand(0,n); переходим и ставим...
1
|
||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
|
||
| 09.07.2011, 12:20 | ||
|
первый файл мы всегда запомним второй фифти фифти третий одна треть и т.д или ты заменяешь имя файла тогда ГУД но будет зависеть от генератора может случайное число тоже один раз генерить???
1
|
||
|
Основоположник на всё
44 / 44 / 3
Регистрация: 22.02.2010
Сообщений: 362
|
|
| 09.07.2011, 12:21 [ТС] | |
|
Случайное число на каждый файл свое. Это уже какие-то оскарбления пошли
![]() Точно асм, там более половины это иконка и ресурсы. P.S. Это ж не системный драйвер?!
0
|
|
|
4 / 4 / 0
Регистрация: 19.01.2011
Сообщений: 26
|
|
| 09.07.2011, 12:37 | |
|
точна, иконка много жрет (((.
может алгоритм и работает, но поверхностный взгял говорит о том, что файлы будут выбраны некоторые из первых, что уже в принципе не верно. еще раз повторюсь: ищем файлы нужного расширения и сохраняем их последовательный номер, генерируем ранломное число от 0 до "всего файлов", переходим по рандомному числу к последовательному нмеру файла. переходим к файлу и делаем с ним все что нужно. минимум памяти и намного меньше вычислений процом, обращений к диску на ~25% больше чем у вас, но результат будет верным. предлагать написать это на си не буду, ибо если вы на асме пишете, то мое предложение будет слегка неуместным)
0
|
|
|
Основоположник на всё
44 / 44 / 3
Регистрация: 22.02.2010
Сообщений: 362
|
|
| 09.07.2011, 12:53 [ТС] | |
|
Практика сделана, теория подтвердилась математически.
Что Вы как коршуны набросились на ребенка? Типа, не делай так, а делай так! Опчем речь? Одна философия! Есть конкретная идея и я хотел узнать Ваше мнение конкретно по ней, а Вы на нее забили и тычите мне свои варианты... Тема была: "Просчет вероятности", а Вы мне: "Что поделить, какой размер, куда пойти"... Все, ухожу я от Вас. И не постите более ничего
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
|
||||
| 09.07.2011, 13:21 | ||||
|
Vitam1n,
Ты не понял смотри 1 файл запишем всегда 2 файл перепишет первый с вероятностью 1/2(соответственно первый останется с той же вероятностью) 3 перепишет предыдущий с вероятностью 1/3 ................................ как раз на первый взгляд событие равноверотно для всех файлов но при генерации при каждой итерации случайного числа по моему возникнет перекос число нужно генерить один раз возникает вопрос о инициализации генератора иначе получим то что при каждом запуске программы будет генерится одно и тоже число Добавлено через 1 минуту твоя запись
1
|
||||
|
Основоположник на всё
44 / 44 / 3
Регистрация: 22.02.2010
Сообщений: 362
|
|
| 09.07.2011, 13:37 [ТС] | |
|
Число обязано генерироваться каждый раз новое по-любому. Для этого используется rdtsc, возвращающее количество прошедших тактов с момента запуска компа и предыдущее значение. Хотел сначала использовать РСЛОС или конгруэнтный генератор, но нафиг тут такие сложности? Формула расчета вероятности выложена. Что не так???
0
|
|
|
4 / 4 / 0
Регистрация: 19.01.2011
Сообщений: 26
|
||
| 09.07.2011, 14:39 | ||
|
2 файл с вероятностью 1/2 если файлов два. 3 файл с вероятность 1/3 если файлов три да, прийдя до последнего мы найдем вероятность общую для всех, я с этим согласен. программа рабочая - с этим тоже согласен. результаты подтвердились - еще лучше. но алгоритм очень кривой. 100к файлов по вашему алгоритму это 100к рандомов, это 100к делений 1/n (с потерей точности, ибо цифер после запятой фиксированное количество), а потом 100к умножений этих ДРОБНЫХ чисел. одно только умножение происходит за тактов равное величине второго операнда. деление в 10 раз дольше. толку от ассамблера ноль если кривой алгоритм. я же предложил 100к инкрементов выолняемых за 1 такт и одно деление 1/количество в допустим 100 тактов. 1 проход с инкрементом и 1 деление. и тот же результат. Fedor666, если вы пришли на форум с вопросами и советами, то не стоит обижаться всякий раз когда ваш код критикуют или советуют более оптимальный вариант. Добавлено через 7 минут выбор 1 яблока из мешка в котором 100 яблок. у каждого яблока 1/100 быть выбранным. федор, ты делаешь так: вытащили яблоко, это у нас какое по счету? 1 делим на порядок...ага...умножаем на то что раньше посчитали...ага...запоминаем... вытащили следующее яблоко. это у нас какое по счету? 1 делим на порядок...ага...умножаем на то что раньше посчитали...ага...запоминаем... и так сто раз. как делаю я: достали яблоко, раз достали яблоко, два достали яблоко, три ... сто яблок? ага 1 делим на сто....ага...запомнили...
0
|
||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
|
||||
| 09.07.2011, 15:03 | ||||
|
целочисленая арифметика
1
|
||||
|
Основоположник на всё
44 / 44 / 3
Регистрация: 22.02.2010
Сообщений: 362
|
|
| 09.07.2011, 15:03 [ТС] | |
|
Какие дробные числа? Только целочисленное деление DIV. И потом счего нам такты считать, если мы в цикле API FindNextFile вызываем? Оптимизация неуместна
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
|
|
| 09.07.2011, 15:04 | |
|
1
|
|
| 09.07.2011, 15:04 | |
|
Помогаю со студенческими работами здесь
40
Подсчитать вероятность исхода футбольного матча Подсчитать вероятность того, что студент ответит верно Подсчитать вероятность того, что шар из первой десятки не будет вынут из корзины через n шагов Вероятность наступления события А равна 0.7. Вычислить вероятность следующих событий Вероятность изготовления на станке стандартной детали равна 0,9. Найти вероятность Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|