Вход | Регистрация


1С:Предприятие ::

Метки:Встроенный язык

Как сделать 1С-ке генератор случайных чисел ?

Я
   cat
 
12.08.04 - 07:32
Привет всем!
Подскажите пож-та... можно ли сделать в 1С-ке генератор случайных чисел или есть ли такая команда как "randomize timer"
 
 
   Petro
2 - 12.08.04 - 08:11
Пользуюсь вот этим. Чье-то. Спасибо ему(ей).

Перем глСлучайноеЧисло Экспорт;
Функция глРанд(От=0,До=1,Шаг=0,Парам=0) Экспорт
Если Парам<>0 Тогда
глСлучайноеЧисло=Парам;
КонецЕсли;
Если Число(глСлучайноеЧисло)=0 Тогда
глСлучайноеЧисло=Число(СтрЗаменить(""+ТекущееВремя(),":",""));
глСлучайноеЧисло=(16807*глСлучайноеЧисло)%2147483647;
КонецЕсли;
глСлучайноеЧисло=(16807*глСлучайноеЧисло)%2147483647;
глСлучайноеЧисло=макс(глСлучайноеЧисло,-глСлучайноеЧисло);
СлЕд=глСлучайноеЧисло/2147483647;
СлВыб=СлЕд*(До-От)+От;
Если Шаг>0 Тогда
СлВыб=От+Окр((СлВыб-От)/Шаг)*Шаг;
КонецЕсли;
Возврат(СлВыб);
КонецФункции
   Эмблема форума
 
4 - 12.08.04 - 08:15
   NS
 
13 - 12.08.04 - 14:06
(11)Да уж.... веточка... Никто так и не привел алгоритм, как пять чисел расположить в случайном порядке....
randSeed=ranseed%100000000001;
randSeed=randSeed*1103515245+12345;
и проблемы со скоростью снимаются...
   NS
 
18 - 12.08.04 - 14:37
(17) randSeed=randseed%100000000001; 
а так? ;-)
по поводу (12)
Премешать N чисел:
Для а=1 по N цикл
  массив[а]=а;
Конеццикла;
Для а=1 по N-1 цикл
  Сл=Случ(а,N)// Целое случайное число в интервале [а..N]

  К=массив[а];
  массив[а]=массив[Сл];
  массив[Сл]=К;
КонецЦикла;
   cat
 
21 - 12.08.04 - 14:47
всё хорошо....
Sc    =    CreateObject("MSScriptControl.ScriptControl");
Sc.language    =    "VBscript";
sc.executeStatement("randomize");  
оноВотТутаБудет=Sc.eval("rnd");
но как тут сделать чтобы числа выбирались произвольно от 1 до 100?
   cat
 
24 - 12.08.04 - 15:29
Ранд=_GetPerformanceCounter()%(100+1);
похоже это лучшеее
   romix
 
31 - 12.08.04 - 20:35
Библиотека мат. функций, где есть генератор сл. чисел:
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=92&lid=2688

Или поиск по ключевому слову "математические".

(30) Не понял. Где там можно ошибиться? Рандомизатор - это стандартная сишная функция, которая есть во всех языках (кроме 1С).



Список тем форума
 
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Э. Йодан
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует