Книга знаний

1С:Предприятие / Приемы программирования

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

Подборка алгоритмов для генерации случайных чисел и перемешивания.Автор статьи:
Последняя редакция №1 от 27.02.05
URL: http://kb.mista.ru/article.php?id=25

Перем глСлучайноеЧисло Экспорт;

Функция глРанд(От=0,До=1,Шаг=0,Парам=0) Экспорт

Если Парам<>0 Тогда
 глСлучайноеЧисло=Парам;
КонецЕсли;

Если Число(глСлучайноеЧисло)=0 Тогда
 глСлучайноеЧисло=Число(СтрЗаменить(""+ТекущееВремя(),":",""));
 глСлучайноеЧисло=(16807*глСлучайноеЧисло)%2147483647;
КонецЕсли;

глСлучайноеЧисло=(16807*глСлучайноеЧисло)%2147483647;
глСлучайноеЧисло=макс(глСлучайноеЧисло,-глСлучайноеЧисло);
СлЕд=глСлучайноеЧисло/2147483647;
СлВыб=СлЕд*(До-От)+От;

Если Шаг>0 Тогда
 СлВыб=От+Окр((СлВыб-От)/Шаг)*Шаг;
КонецЕсли;

Возврат(СлВыб);
КонецФункции  

-------------------------------------

http://www.sinor.ru/~my1c/knowhow/rand.html

-------------------------------------

randSeed=ranseed%100000000001;
randSeed=randSeed*1103515245+12345;
и проблемы со скоростью снимаются...  

randSeed=randseed%100000000001;
а так? ;-)

-------------------------------------
Премешать N чисел:
Для а=1 по N цикл
массив[а]=а;
Конеццикла;
Для а=1 по N-1 цикл
Сл=Случ(а,N);// Целое случайное число в интервале [а..N]
К=массив[а];
массив[а]=массив[Сл];
массив[Сл]=К;
КонецЦикла;  

-------------------------------------

Sc    =    CreateObject("MSScriptControl.ScriptControl");
Sc.language    =    "VBscript";
sc.executeStatement("randomize");  
оноВотТутаБудет=Sc.eval("rnd");

Как сделать чтобы числа выбирались произвольно от 1 до 100?  


Ранд=_GetPerformanceCounter()%(100+1);
похоже это лучшеее  

-------------------------------------

Библиотека мат. функций, где есть генератор сл. чисел:
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=92&lid=2688

-------------------------------------

В 8.0 для получения случайных чисел можно использовать встроенный генератор GUID.

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика