1. выбор "дежурного" с обработкой исключения ранее выбранного в последующих "рулетках";
2. случайный "анекдот дня";
3. генерация текста (в разных формах, для создания впечатления "человеческого участия) для эл. писем клиентам об упоминании услуг своей компании (звучит строго, но подразумеваю: обновление, настройка, доработка, а также (внимание) обычное "мы о вас помним и готовы помочь).
4. в срм: случайный выбор клиентов
5. случайный товар (для продажников) и отправка эл. письма
(1) Налоговая попросила копии оригиналов счетов-фактур за год. Объем документов впечатляет. Копировать не реально. Распечатать не проблема, проблема подписать все это хозяйство. Сделал порядка 30 вариантов png изображений Печать+Подпись и выводил их на печать с помощью ГСЧ.
(1) ildarovich, да. При создании печ.формы контрольной накладной потребовалось выбирать ГСЧ строку из документа.
Смысл в том, что склад отгружает продукцию. Нужно наугад выбрать продукцию и проконтролировать работу склада.
Запросом получала всю номенклатуру из ТЧ, далее с помощью ГСЧ любую строку. Пример из кода:
(1) ildarovich, при прикручивании работы с файлами в томах на дисках ГСЧ использовался для формирования относительно уникального имени файла в томе, на основе исходного имени файла.
На самом деле редко когда требуется именно числовые значения - приходилось использовать только для заполнения набора тестовых данных.
гораздо чаще Новый УникальныйИдентификатор() - все таки база данных это в основном работа по ссылочным/текстовым типам.
(66) AlexO, да вот именно это и делал - потом отслеживал блокировки, узкие места и правил код - потому как на рабочей базе статистику собирать было нельзя - она и так загибалась.
удалось в результате очень серьезно разгрузить сервер бд и найти плавающие ошибки.
(9) ildarovich, так между всеми участниками все равно приз не разделить. так что предлагаю отдать вознаграждение тому, кто первый привез реальный пример использования ГСЧ (общий пример про ШК не в счет).
(19) ildarovich, спасибо за предложение, но не обязательно. это наверно было ближе к юмору)
так что пусть призовой фонд остается и пусть народ делиться своим опытом)
я дополнительный код генерировал им для подтверждения уникальности клиента, при приеме оборудования в ремонт.
Этот код клиент потом на сайте вводил для запроса инфы по своему аппарату.
Примитивная такая, но защита от дурака на шару.
Вы поосторожнее здесь с количеством (даже по теме) а то "старички" могут подумать что новичёк $m так зарабатывает и поставят кучу "-" и вы в дауне на месяц и воспользоваться заработанным не получиться ;-)
(41) AnryMc, СМ я зарабатываю исключительно предоставлением полезной инфы в постах (примеры кода и т.д.), тут тема похоже на LIFE, почему бы не поучаствовать.
Свои публикации выложу в ближайшем будущем, пока что много работы, чтобы завершить идейные начала.
Была задача по имеющимся начальным остаткам и документам поступления и текущим остаткам на складе создать отчеты по розничным продажам на каждый день за год для предстоящей проверки.
(0) Распределение накладных по дням, прогон(размазыввание) оборота за год, распределение водил в накладные в зависимости от веса..
Да много чего, что без рандома не сделал бы.
1. выбор "дежурного" с обработкой исключения ранее выбранного в последующих "рулетках";
2. случайный "анекдот дня";
3. генерация текста (в разных формах, для создания впечатления "человеческого участия) для эл. писем клиентам об упоминании услуг своей компании (звучит строго, но подразумеваю: обновление, настройка, доработка, а также (внимание) обычное "мы о вас помним и готовы помочь).
4. в срм: случайный выбор клиентов
5. случайный товар (для продажников) и отправка эл. письма
6. несколько случайных товаров (из списка допустимых для случайного выбора) для продажи по категориям АВС для продаванов в рознице, по которым начисляются дополнительные проценты при продаже.(25) Boneman, я описал пример, можно сказать :)
6. несколько случайных товаров (из списка допустимых для случайного выбора) для продажи по категориям АВС для продаванов в рознице, по которым начисляются дополнительные проценты при продаже.
7. из той же АВС: несколько случайных товаров для продажи (в зависимости от отдела, в котором работает продавец - категория и тип товара).
8. вопросы для тестирования тех же продавцов (другой категории сотрудник). Для офис менеджеров я бы поставил неск. случайных вопросов по безопасности ПО (например, нельзя открывать исполнительные файлы в эл. письмах)
9. продолжу идею с вопросами и тестированием - повышение знаний сотрудников - предоставление случайной задачи (например, в одной фирме есть система поощрения за изучение англ. языка, тогда можно сделать словарик, из которого случайные слова / фразы будут предоставляться, а сотрудник должен дать перевод, используя гугл и вводя перевод на русском в поле ввода).
в сбербанке, например, существует система премий по 5 признакам, одна из них - саморазвитие. Обязательно раз в месяц нужно подготовить тему для выступления (в юридическом отделе обычно по изменениям в законодательстве). в сбере хоть и не используют 1с, но некоторые фирмы таеже заинтересованы в развитии своих сотрудников.
генерация случайностей - только в пользу этому
Генерил изи пароли, для "сложных" срезал первых 10 вроде с новый УИД.
Но потом одному ОЧЕНЬ неуверенному бухгалтеру апнул на "Меджик Ball 8".
Н вариантов - "Хорошие перспективы";"Знаки говорят — «да»";"Пока не ясно, попробуй снова";
Причем добавил еще парочку своих 1сных фраз) он стал так отчетность сдавать х)
Внимание - НЕ для економистов с фин. резом!!!
Дважды приходилось юзать
Первый раз - случайным образом выбиралась картинка печати. Печать+Подпись. Разные подписи.
Второй раз - розыгрыш на 1 апреля с произвольно-устанавливающимся временем закрытия формы. Чуть не погиб от рук бухов ))
еще был раз... устанавливалась случайная наценка на печать. Широкий формат и сольвентная печать. Себестоимость копеечная, но директор хотел, что бы разным клиентам циферки чучуть отличались. Так и не смог объяснить зачем. Но рандомная поправка +/-5% до сих пор работает ))
Заполнение набора тестовых данных
Генерация ШК
Генерация коротких уникальных УИ
Выборочный контроль сотрудников
Расчет риска методом Монте-Карло
Определение интервалов обращения к сервисам
Одноразовые пароли
Выбор аттестационных вопросов
Азартные игры
Эмуляция отчетности
Розыгрыши
Ключи шифрования
Формирование недостающих документов
Моделирование деятельности
Генерация паролей
Распределение накладных по водителям
Моделирование отчетности
Выбор исполнителя
Выбор анекдота
Диверсификация текстов
Выбор клиентов для акций
Выбор товаров для акций
Розыгрыш премий
Выбор товаров для стимулирования продаж
Имитация ошибок и искажений информации
Магический шар
Криптография
(42) ildarovich,
Ну "Методом Монте-Карло" можно не только риски...
В совке (ещё на "Примусе" - диалоговая система для ОС ЕС) я монте-карлил оптимизацию фазированной акустической антенны...
Например им же можно решать задачи методом графов - например оптимизация маршрута...
Да вообще практически любая оптимизация (укладки, расстояний...)
ГСЧ - очень полезная вещь. Он позволяет получить максимум информации при минимуме действий, развернуть один бит в любой, сколь угодно большой объем. В связи с этим, сфера его применения неопределенно широка.
С таким же успехом вы могли бы спросить про условный оператор.
Использовал для задачи моделирования системы управления запасами.
Суть в том, что объем (спроса) расхода со склада нельзя спрогнозировать точно. Всегда будут отклонения. Для адекватного имитационного моделирования нужно использовать ГСЧ с заданной функцией распределения.
Автоматическое распределение товара по покупателям в условиях спроса превышающего предложение, с учетом различного приоритета покупателей. Товар штучный, автомобили в данном случае, покупатели - оптовики (дилеры).
Я как-то при распределении бонуса по подразделению рандомно выбирал "счастливчика" и закидывал не распределившийся после вычислений остаток. Копейки, конечно, но почему все должно доставаться последнему по списку?:)
Программная эмуляция набора текста из случайных букв с случайной задержкой между нажатиями и случайной паузой между набором слов (ну скажем, для тестирования "CrocoTime").
Нет ни чего более закономерного, чем случайное событие в заданном диапазоне. Использовалась для исключения последовательностей в заданном интервале определенных чисел. Как говорил препод по теории вероятности и комбинаторики область применения сиих предметов достаточно обширна и с этими словами он начал выкидывать в почтовую щель зачетки - мол, чья вылетела, тому 5 за экзамен...Про статистику понравилось - прям в точку ;)
В общем, тему закрываю.
Наиболее полезными мне показались использования, связанные со случайными выборками из справочников и документов: для выборочного контроля, вознаграждения, назначения.
Интересен метод Монте-Карло, но, вероятно, схема использования сильно зависит от самой задачи, поэтому без ее подробного описания оценить полезность сложно. Интересна бы была подробная статья на эту тему, если был практический эффект.
Генерация фактуры прошлой деятельности как-то не вдохновляет, разве что для тестирования.
В генерации паролей нет никакой 1С-специфики.
Поэтому вознаграждение, на мой взгляд, заслуживает timeforlive, предложивших больше всех полезных примеров.
Интересен метод Монте-Карло, но, вероятно, схема использования сильно зависит от самой задачи, поэтому без ее подробного описания оценить полезность сложно. Интересна бы была подробная статья на эту тему, если был практический эффект.
(60) AnryMc, тут проблема не в литературе. Ее действительно много. Проблема в том, что в ней рассматриваются ученические, учебные задачи. Да и из головы задачу не проблема придумать. А хотелось бы увидеть ту реальную задачу, за которую заплатил (готов заплатить) заказчик.
Современная информатика широко использует псевдослучайные числа в самых разных приложениях — от метода Монте-Карло и имитационного моделирования до криптографии. При этом от качества используемых ГПСЧ напрямую зависит качество получаемых результатов. Это обстоятельство подчёркивает известный афоризм математика ORNL Роберта Кавью: «генерация случайных чисел слишком важна, чтобы оставлять её на волю случая».
По-моему, вознаграждение выдано ни за что.
В 60 сообщениях не названо ни одного серьезного применения, либо - игрушки, либо - игралки разработчика, изнывающего от безделья )
Когда мне нужен был генератор случайных чисел в 1С - его не было.
Рамдомная выборка из большого массива данных для формирования статистики, и последующего анализа на основе полученной презентативной выборки.
ildarovich, для спама "Именно <тема топика> я лично почти не использую, но сама программа мне жизненно необходима..." есть кнопка "спам". Минусовать не обязательно ))
Полагаю, что ГСЧ может использоваться при планировании/прогнозировании наряду со статистическими данными или при недостаточности таковых. Просторы для применения тем выше, чем ближе объектная область к сложным техническим устройствам, для которых зависимость числа отказов (поломок т.е.) технари описывают формулами из теории вероятностей, но заранее дать точный прогноз по времени простоя и объемам ремонтных работ не могут.
Нечто подобное можно соотнести и с чрезвычайными ситуациями и планированием мероприятий по их ликвидации и предупреждению.
Не из области учета и 1С но все-таки - моделирование случайных нагрузок (ветер в строительстве, проезжающий по мосту транспорт и т.д.)
Не из области учета и 1С но все-таки - моделирование случайных нагрузок
Каким образом вы моделируете случайные нагрузки - на мост? На балку? На дорогу?
Т.е. смоделировали через ГСЧ нагрузку "танк" - рассчитан мост на "танк". А "случайно" смоделировали нагрузку только на велосипед - нагрузка "танк" уже обвалит мост??
(72) AlexO, Ну здесь речь уже не о первоначальном расчете по учебнику сопромата, а о сложных системах, призванных проверить уже посчитанное в динамике. (Что скрывать - живьем такие не видел и не щупал, но они есть) ГСЧ в таком случае должен выдавать величины нагрузок от "велосипеда до танка" с определенным законом распределения, которые начинают двигаться по мосту со случайной же скоростью. Дует случайный ветер и т.д. по множествк параметров
Ну да, - бывает и так, что 2 танка безопаснее, чем один. Зависит все от того где они находтся :)
Ну да, - бывает и так, что 2 танка безопаснее, чем один. Зависит все от того где они находтся
В любом случае - мост, рссчитанный на танк, не нуждается в отдельном просчете для велосипеда.
Или "зависит от того, где находится танк, а где - велосипед"? ))
Тогда грош цена и расчету, и мосту.
(77) AlexO, Я про то, что расчет крупного моста в современных условиях обязательно проверяют моделированием. Кроме статической нагрузки (велосипед/танк, по которой считают изначально) есть колебания под действием ветров, проходящего транспорта и т.д. (инач говоря окружающей среды в целом). Про Тахому же наверняка слышали? Сегодня такие объекты стараются моделировать еще до начала строительства. Для статического расчета опасны "танки" в определенных точках конструкции. Для колебательной системы это может оказаться и велосипед, и легковушка, и фура в сочетании с сильным ветром, даже при условии, что танк с тем же ветром дает удовлетворительный результат.
Ребят, а я вот хочу спросить в тему. Есть ли возможность использовать в 1С не встроенный ГСЧ, а сторонний, например, код C#? Я для своих ма-а-леньких приложений использую вот такой вот код, что очень помогает создать ГСЧ без повторений:
public void RandomSkill()
{
Console.WriteLine("случайное число запущено");
long time1 = DateTime.Now.Ticks;
long time2 = DateTime.Now.Ticks;
long time3 = time1;
int intTime = 0;
int i_ = 0;
int startIndex = 0;
int result = 0;
int[] massResult = new int[2001];
int indexMassResult = 0;
while (i_ < 10000)
{
while ((time2 == time1) || (time2 == time3))
{
time2 = DateTime.Now.Ticks;
}
time3 = time2;
time1 = DateTime.Now.Ticks;
try
{
startIndex = Convert.ToString(time2).Length;
startIndex = (startIndex % 2 == 0) ? startIndex / 2 : (startIndex + 1) / 2;
intTime = Int32.Parse(Convert.ToString(time2).Substring(startIndex));
}
catch { intTime = startIndex; };
Random rnd = new Random(intTime);
if (i_ % 5 == 0)
{
result = rnd.Next(1, 10);
Console.WriteLine("Итерация ({3}): {2}; result = {0}; intTime = {1}", result, intTime, i_ / 5, i_);
}
indexMassResult = (i_ % 5 == 0) ? indexMassResult + 1 : indexMassResult;
massResult[indexMassResult] = result;
i_++;
}
Console.WriteLine("случайное число завершено успешно.");
// проверяем, есть ли совпадения в 4 итерациях подряд (i_ кратно 5)
if (1 == 1) // поставьте 0, если не нужно проверять на совпадения
{
Console.WriteLine("Начало проверки на совпадение чисел (на каждые 4 числа подряд)");
i_ = 3;
while (i_ < 2000)
{
bool b_ = true;
while (b_)
{
int indexIn = i_ - 3;
int IndexOut = i_ - 2;
int on eNumberRepeat = 0;
int twoNumberRepeat = 0;
int threeNumberRepeat = 0;
while (indexIn <= 2)
{
while (IndexOut <= 3)
{
on eNumberRepeat = ((massResult[indexIn] == massResult[IndexOut]) && indexIn == 0) ? oneNumberRepeat + 1 : oneNumberRepeat;
twoNumberRepeat = ((massResult[indexIn] == massResult[IndexOut]) && indexIn == 1) ? twoNumberRepeat + 1 : twoNumberRepeat;
threeNumberRepeat = ((massResult[indexIn] == massResult[IndexOut]) && indexIn == 2) ? threeNumberRepeat + 1 : threeNumberRepeat;
IndexOut++;
}
indexIn++;
IndexOut = indexIn + 1;
}
int bothFirst = oneNumberRepeat+twoNumberRepeat;
int bothSecond = twoNumberRepeat + threeNumberRepeat;
int bothThird = oneNumberRepeat + threeNumberRepeat;
int bothAll = oneNumberRepeat + twoNumberRepeat + threeNumberRepeat;
/*
if ((oneNumberRepeat != 0) && (twoNumberRepeat != 0) && (threeNumberRepeat != 0)) // например, такая последовательность: 1 1 2 3
{
Console.WriteLine("Количество совпадения на 4 итерации подряд\n Числа: {0} {1} {2} {3}\n ---------------", massResult[0], massResult[1], massResult[2], massResult[3]);
}
else { Console.WriteLine("Нет совпадений"); }
/* */
if ((oneNumberRepeat > 1) || (twoNumberRepeat > 1)) // например, такая последовательность: 1 1 1 3
{
Console.WriteLine("Есть совпадения 3х чисел в одной последовательности.\n Числа: {0} {1} {2} {3}\n ---------------", massResult[i_ - 3], massResult[i_ - 2], massResult[i_ - 1], massResult[i_]);
}
else { Console.WriteLine("Нет совпадений"); }
/* */
/* */
if ((bothFirst > 1) || (bothSecond > 1) || (bothThird> 1)) // например, такая последовательность: 1 1 2 2
{
Console.WriteLine("Есть совпадения 2х пар чисел в одной последовательности.\n Числа: {0} {1} {2} {3}\n ---------------", massResult[i_ - 3], massResult[i_ - 2], massResult[i_ - 1], massResult[i_]);
}
else { Console.WriteLine("Нет совпадений"); }
/* */
b_ = false;
}
i_++;
}
Console.WriteLine("Проверка на совпадения чисел - завершена.");
}
} // end RandomSkill
(78) я и спрашиваю, как в 1с запускать? через сом объект? а запускать исполнительный (ехе) файл.
тогда остается вопрос (который выходит за рамки данной темы) как данные, полученные в виндовс приложении, перенести в 1с. Вероятно, танец с бубном и нужные dll файлы...
Напрямую нельзя, а COM-технология в 1С - то еще развлечение: написано студентами - и для студентов. Что-то сложнее "лабораторной работы" в виде примитивов 1С получить от такого COM практически нельзя.
(80) timeforlive, определите сначала четко задачу, что из чего нужно получать. я уже запутался, что из чего получать надо и что у вас имеется на руках))). если у вас есть готовое windows-приложение , то по идее уже нужна ВК на C# , которая при генерации данных , будет передавать их через внешнее событие (есть еще вариант записи данных через некое общее хранилище, будь-то файл, БД или что-нибудь еще). но это если есть некое готовое приложение. если нужно генерировать просто случайные числа, то выше я написал как.
(89) Serginio, это я знаю. я не про то. я имел в виду, если у него есть готовое standalone -приложение код которого он менять не может или не хочет, но хочет передать оттуда данные в 1С.
(91) Я к тому, что в 8 ке ВК как таковая не нужна. Достаточно COM. Просто в http://infostart.ru/public/238584/ есть возможность использовать любых сборок .Net в том числе и Netовские события
private static int NextInt(int min, int max)
{
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
byte[] buffer = new byte[4];
rng.GetBytes(buffer);
int result = BitConverter.ToInt32(buffer, 0);
return new Random(result).Next(min, max);
}
Показать
чтобы использовать это в 1С - есть два пути. один сделать COM сервер (в дотнете это очень легко, по сути достаточно для простых случае пометить класс как COMVisible) , либо (и это вариант я также использовал, но он пригоден только для SQL Server) , написать SQL CLR сборку, написать stored function и через внешние источники в 1С использовать.
(85) cool.vlad4, в дополнение - класс RNGCryptoServiceProvider к тому же [ComVisibleAttribute(true)]. не удивлюсь если его напрямую можно создать в 1С. (хотя возможно что и нет. не знаю, не пробовал)
(85) Согласен. Проверил на 2000 итераций. Вполне подходит для генерации случайных чисел.
Мой код отличается тем, что из 2000 итераций отсутствует совпадение 4х чисел подряд (т.е., например, 1 1 2 3 - есть одно совпадение).
Числа брал от 1 до 99.
Код msdn имеет 98 совпадений из 2000. Для разных компьютеров по разному, но на моем 98, вот так вот.
Кстати, совпадения происходят в такой (так похожей на ГСЧ) последовательности:
96, 47, 93, 47
1, 46, 1, 96
83, 84, 44, 84
Видно, что через один происходит повторение - а это не есть хорошо в некоторых случаях... Теория вероятности говорит, что и такое бывает, но не 1:20 это должно быть...
Я написал в (76), что использую "ГСЧ без повторений". Мой код не красив и груб, кто-то скажет, что это Анти-паттерн (см. http://lurkmore.to/Анти-паттерн), а я скажу, что это Грязный Хак (см. http://lurkmore.to/Грязный_хак).
Работает? да. При необходимости можно и параметры засунуть дополнительные и прочее. Если приложение в народ давать с исходным кодом, то, вероятно, я бы занялся рефакторингом, но я преследовал иной цели - выполнить ту задачу, которую я поставил в кратчайшее время (этот пост я писал дольше) ^_^
(94) timeforlive, у ГПСЧ вроде есть специальные тесты . там надо распределение чисел смотреть, а не повторяемость каких-то чисел. в любом случае собственные исследования это похвально , я серьезно.
В статье "Расчет хэш-функции в запросе" приведен Пример 3, который показывает, как можно непосредственно В ЗАПРОСЕ выбирать записи справочника СЛУЧАЙНЫМ (псевдослучайным образом) образом.
Это может помочь решению многих из упомянутых здесь задач, при необходимости использования для решения языка запросов.
В статье "Расчет хэш-функции в запросе" приведен Пример 3
Опять же, имитация. Нужно поле Дата, да еще в Справочнике, да еще и заполнять надо ))
А Дата сама по себе - "случайная вещь", если обновляется постоянно. А если нет?