Генератор случайных чисел. 1СV7

Новая тема
"Может ли кто-нибудь подкинуть идейку,
как можно сгенерить в 1С-ке случайные числа,
с заданием интервала,
Например: от 1 до Список.РазмерСписка();?
Есть мысль использовать для этого GUID (через внешнюю компоненту V7Plus). Может есть ещё что-нибудь?"
Например в начале берём "ТекущееВремя(<Час>,<Мин>,<Сек>)"
А далее от этого отталкиваемся.
Да я знаю, что к таймеру можно привязать.
Все равно, это будет псевдо-случайное число. Нужно, чтобы оно линейно генерировало числа, а не так, чтоб пик приходился на середину (начало или конец интервала). Хотя в принципе, подойдет и псевдо. Вся загвоздка в формулах:
Нужно задать интервал от 1 до Х (к примеру) и получить случайное число. Конец интервала (Х) постоянно меняется.
Формулы для генератора нужно поискать в справочниках. Или, например, воспользоваться функцией RND из VBScript...
Некоторые примеры есть тут: http://kb.mista.ru/article.php?id=25&&v8=0
и
тут: http://www.sinor.ru/%7Emy1c/knowhow/rand.html
"//Генерирование случайных чисел взято по примеру Кайгородова Андрея aka mszsuz
Перем СлучайныйФактор;
//______________________________________________________­__
//инициализация случайной переменной для использования в дальнейшем
Процедура ПосеятьЧисло()
   Перем ч,м,с;
   ТекущееВремя(ч,м,с);
   СлучайныйФактор=ч*24+м*60+с;
КонецПроцедуры
//____________________________________­____________________
//функция получения случаного числа от 1 до заданного значения
Функция СлучайноеЧисло(Максимум) Экспорт
   СлучайныйФактор=(13*СлучайныйФактор+13849)%65536;
   Возврат ((СлучайныйФактор%Максимум)+1);
КонецФункции"
Cпасибо.
Привязка к таймеру, конечно, весчь хорошая, но когда за 1 секунду выбирается из списка до 15-20 значений (весь список 200-300 зн.), получается, что выборка происходит партиями (по 15-20 одинаковых значений).
Но в принципе, решил задачу так:
Генератор сл.чисел на таймере + Удаление уже использованных значений списка + добавление N-ного числа к случайному при следующей выборке из списка значений + смена направления сортировки списка.
Вроде-бы, картина более-менее получилась реальная.
Выше же был пример.
А то что за секунду выбирается несколько одинаковых значений - это недостаток алгоритма.
А начальная инициализация от таймера- это практически все генераторы так делают. Берём дату и время и инициализируем.
Можешь ещё добавить имя пользователя/компьютера.
А использованные значения из списка удалять-то зачем? это же генератор случайных чисел и повтореня вполне реальны.
Читают тему
(гостей: 1)

Быстрый переход