#0
by Груздь
Если получить последовательность случайных чисел в диапазоне от n до m любым из известных генераторов, то среднее арифметическое чисел этой последовательности будет стремиться к (m-n+1)/2, при количестве членов последовательности стремящемся к бесконечности. Нужно написать генератор, для которого это среднее арифметическое можно было бы задавать. Вывихнул мозги, а алгоритм придумать не могу. Помогите, пожалуйста ...
#7
by wuxep
отсчет начинать беря что-нибудь типа времени. Перескакивать с интервалами в зависимости от времени. Почти случайные получатся :)
#12
by vvv29
ТОлько зачем в 1с генератор случайных чисел?, чтобы сумму случайно в отчеты писать? или зачем?
#13
by Груздь
Для настоящих одинэсников поясню на пиримере: Предположим n=1, m=3 и чисел нужно 10 штук ... Генерим последовательность: 2,1,2,3,1,1,3,2,3,1 Складываем все её члены и делим на их количество (получаем среднее арифметическое) ... = 1,9 ~ 2 Понятно, что, чем длиннее последовательность, тем ближе это среднее будет к двойке. А мне нужен алгоритм, который генерил бы последовательности такие, чтоб это среднее было бы задаваемым пользователем. Ну, предположим, для примера выше, я бы задал это среднее равным 2.8 ... Разумеется, троек в ней должно быть больше, чем двоек ..., а единичек ещё меньше ... ... Понятно теперь?
#17
by dk
Делал нечто подобное :) но на Дельфи -------- Идея: 1) Выбираешь функцию распределения в пределах ограничений 1С :( 2) Делишь на участки (скажем штук на 100). Можно в зависимости от нужного кол-ва случ. чисел 3) Для каждого участка считаешь интеграл (ИнтУчастка), подразумевая, что интеграл функции распределения на нужном участке равен 100% (ИнтОбщ) и высчитываешь % этого интеграла от 100 % Проц = ИнтУчастка / ИнтОбщ 4) Получаешь количество чисел на данном участке как КоличествоНаУчастке = ОбщееКоличество * Проц 5) Получаешь случайные числа в количестве КоличествоНаУчастке в интервале участка (функцией равномерного распределения (см. 4)) Так по всем участкам ------- Нужно учитывать, что если на участок приходится меньше одного случайного числа, то нужно складывать соседние участки, пока не получишь значение больше одного --------------- Хм, получилось сумбурно, но надеюсь суть ясна -------------------- Основные проблемы (в рамках 1С): - Вычисление интеграла (функцию распределения нужно брать попроще) - Вычисление случ. чисел по равномерному з-ну распределения
#20
by Груздь
Спасибо ... Но я примерно так же и начал делать, только слишком уж громоздко и заумно плучается, неговоря уже о тормозах ... Наверняка есть более красивые решения ...
#22
by Груздь
А если последовательность постоянно дополняться должна, с соблюдением всех условий её формирования, то алгоритм получается сложней втрое ...
#27
by Груздь
Прикольно ... Уже в начальных классах на уроках информатики детей приучают к платформе 1С ...
#29
by NS
у AVB нормальный генератор, но он со временем начинает тормозить (число начинает увеличиваться) Вообще проще всего где-нибудь скачать таблицу случайных чисел. Тебе нужно задать среднее, и чтоб он на него выходил? Диапазан при этом задается? Сейчас соображу.
#30
by Груздь
Да, диапазон задаётся жёстко ..., а количество чисел в последовательности может увеличиваться в любой момент ...
#31
by NS
Стремится к (n+m)/2 ;-)) Устроит генератор в котором вероятность всех чисел одинакова, кроме одного из крайних - m, либо n ?
#35
by Груздь
В принципе я уже сделал, кое-как ... Втупую разбил весь диапазон на сотню маленьких, оценил вероятности выпадения чисел в каждом, генерю для каждого диапазона количество чисел кратное этой вероятности, затем из полученой кучи случайно выбираю одно ... Изврат, но на большее меня не хватило ...
#36
by NS
Я на выходных подумаю. Сейчас не могу - нервы шалят. С женой в очередной раз из-за её б..дства посрался. Вообще можно сделать линейную зависимость вероятности от числа(вероятность выпадения к:а+в(к-n)), где а и в - коэффициенты. Числа целые?
#37
by Груздь
Бабы - зло! ... Числа целые ... Я тоже в выходные ещё подумаю ..., интересно ..., хоть какая-то зарядка для ума ...
#41
by NS
Подумал... Сдуру вывел форумулу для линейной зависимости вероятности выпадения числа от самого числа. И понял, что это не надо. Понятно, что смысл в том, чтобы скрыть, что вероятность неодинакова. 1 вариант - сделать максимум отклонения вероятности выпадения числа от равномерного (1/(m-n+1)) минимальным. 2 вариант сделать разность максимальной и минимальной вероятности минимальной. ....... Для этого, допустим, если необходимое среднее больше, чем (m+n)/2 - Нужно сделать вероятность для к, меньших требуемого среднего - одинаковым, и меньшим 1/(m-n+1)) А для больших - то-же одинаковым, но большим... Через часик накидаю программку.
#44
by NS
Не понял... Я ответил на вопрос в ноль. Написал генератор случайных чисел (целых, в заданном интервале) с средним значением, задаваемым в процедуре инициализации. Где ВерСр=1/КоличествоЭлементов КоличествоЭлементов=(максЗначение-минЗначение+1) Плюс попутно подправил генератор СЧ написанный avb
#49
by NS
Только я не написал контроли. 3) МинЗначение<МаксЗначение 4) Вероятность может выйти за ноль (отрицательная) нет контроля на то, что срЗначение входит в допустимый диапазон.
#50
by Груздь
Это ничего ... Генератор будет использовать продвинутый программист и ему это не понадобится ...
#51
by Груздь
А я в воскресенье попыжился часок ..., нифига толкового не вышло ... и я, как обычно, отложил задачку до лучших времён ... :((
#52
by NS
на срЗначение лучше поставить ограничение |срЗначение - ((максЗначение+минЗначение) / 2)| <= (КоличествоЭлементов / 10);
#53
by NS
Плюс - из-за особенностей работы цел в 1С - (минЗначение+максЗначение)/2 должно быть >=0,либо должно быть целым (в случае, если меньше нуля)
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Установка запрещена на основании системной политики
- Как программно удалить все элементы справочника?
- Error 630 "Optimization file flushing failure"
- v77 При объединении объект Итерфейсы не объединяется.
- Есть ли в OutLook Express журнал событий (протокол)
- LaserJet1100 не печатает букву "р" , чем ему 1С не понравился?
- Помощник планирования
- Расшифровка в отчет
- Абсолютный ОФФ: Омское доказательство теоремы Ферма
- Импорт штатного расписания сотрудников
- Сохранение таблицы значений в хранилище значений.
- Как внешней обработкой заполнить реквизиты формы справочника
- Как из 1С работать с файлами *.dbf других версий (не IV)?
- Как учесть движение товара из заказа поставщику ?
- УТ 10.2: Как назначить скидку покупателю?
- Объединение конфигураций.....Почему-то не работают регистры?
- возврат значения из формы
- 1С и W2K3: Доступ к файлу файл.mxl закрыт
- Где взять информацию по методам FormEx
- Рабочее место кассира