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


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

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

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

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

Перем глСлучайноеЧисло Экспорт;
Функция глРанд(От=0,До=1,Шаг=0,Парам=0) Экспорт
Если Парам<>0 Тогда
глСлучайноеЧисло=Парам;
КонецЕсли;
Если Число(глСлучайноеЧисло)=0 Тогда
глСлучайноеЧисло=Число(СтрЗаменить(""+ТекущееВремя(),":",""));
глСлучайноеЧисло=(16807*глСлучайноеЧисло)%2147483647;
КонецЕсли;
глСлучайноеЧисло=(16807*глСлучайноеЧисло)%2147483647;
глСлучайноеЧисло=макс(глСлучайноеЧисло,-глСлучайноеЧисло);
СлЕд=глСлучайноеЧисло/2147483647;
СлВыб=СлЕд*(До-От)+От;
Если Шаг>0 Тогда
СлВыб=От+Окр((СлВыб-От)/Шаг)*Шаг;
КонецЕсли;
Возврат(СлВыб);
КонецФункции
   Эмблема форума
 
3 - 12.08.04 - 08:14
(2) Алгоритм описан у Дональда Кнута ...
Наверно, тогда "ему" ...
   Эмблема форума
 
4 - 12.08.04 - 08:15
   Эмблема форума
 
5 - 12.08.04 - 08:28
(2) Кстати, реализация алгоритма - дерьмо!
Убедись сам:
Для Х=1 По 20 Цикл
Сообщить(глРанд(1,3,1))
КонецЦикла
   427
 
6 - 12.08.04 - 08:30
Ну это давно говорили... Ну нет в 1С нормального датчики псевдослучайных чисел...
   Эмблема форума
 
7 - 12.08.04 - 08:33
(6) Те что я предложил и Соарон - вполне сносно работают ...
   427
 
8 - 12.08.04 - 08:34
А я спорю? Это по поводу приведенного в 2 алгоритма...
   Petro
9 - 12.08.04 - 08:47
Как это можно по 20-и 3-х битным числам определить дерьмовость алгоритма ?
Может пару суток покрутить? Вот тогда и можно утверждать что-нибудь.
   Эмблема форума
 
10 - 12.08.04 - 08:52
(9) Запусти пару раз и поймёшь ...
 
  Рекламное место пустует
   NS
 
11 - 12.08.04 - 13:35
(7) То, что предложл ты - тормозит как сволочь!!!
Метод выравнивания быстродействия - я выкладывал на Мисте.
   Эмблема форума
 
12 - 12.08.04 - 13:40
(11) Я знаю ..., я там написал ... :))
Кста, вот ещё способ: http://1c.realnet.ru/cgi-bin/forum.cgi?ask=992#18
   NS
 
13 - 12.08.04 - 14:06
(11)Да уж.... веточка... Никто так и не привел алгоритм, как пять чисел расположить в случайном порядке....
randSeed=ranseed%100000000001;
randSeed=randSeed*1103515245+12345;
и проблемы со скоростью снимаются...
   Эмблема форума
 
14 - 12.08.04 - 14:15
(13) Тоже дрянная реализация!
   Эмблема форума
 
15 - 12.08.04 - 14:16
(14)+ Причём очень дрянная! Дрянней мне пока вроде не попадалось ...
   NS
 
16 - 12.08.04 - 14:18
(14) Это твой алгоритм, и последовательность он выдает такую-же, как и без первого мод-а, только "несколько быстрее" - насколько быстрее - можешь проверить сам... на 100000 элементах.
   Эмблема форума
 
17 - 12.08.04 - 14:23
(16) Наверняка, быстрее ...
Но зато последовательность на случайную уже даже на первый взгляд непохожа ...
   NS
 
18 - 12.08.04 - 14:37
(17) randSeed=randseed%100000000001; 
а так? ;-)
по поводу (12)
Премешать N чисел:
Для а=1 по N цикл
  массив[а]=а;
Конеццикла;
Для а=1 по N-1 цикл
  Сл=Случ(а,N)// Целое случайное число в интервале [а..N]

  К=массив[а];
  массив[а]=массив[Сл];
  массив[Сл]=К;
КонецЦикла;
   Эмблема форума
 
19 - 12.08.04 - 14:41
(18) Так, ессно, ещё хуже ...
Кста, ты может не заметил ..., ветке из (12) уже больше года ...
   NS
 
20 - 12.08.04 - 14:47
(19) То есть за последний год - программирование сделало большой шаг вперед, и наконец-то открыт способ "перемешивания" пяти чисел?
Вечером проверю генератор - что-то ты меня паришь...
Способ без обрезания RandSeed - за сутки 100000 случайных чисел не выдаст...
   cat
 
21 - 12.08.04 - 14:47
всё хорошо....
Sc    =    CreateObject("MSScriptControl.ScriptControl");
Sc.language    =    "VBscript";
sc.executeStatement("randomize");  
оноВотТутаБудет=Sc.eval("rnd");
но как тут сделать чтобы числа выбирались произвольно от 1 до 100?
   Эмблема форума
 
22 - 12.08.04 - 14:49
(20) Просто за год я успел забыть, про что была та ветка ... :))
(21) Читай там (18) пост
   NS
 
23 - 12.08.04 - 14:53
(0)Не парься, пиши генератор на 1С - будет не хуже, и быстрее ;-)
   cat
 
24 - 12.08.04 - 15:29
Ранд=_GetPerformanceCounter()%(100+1);
похоже это лучшеее
   cat
 
25 - 12.08.04 - 15:29
всем спасибо за помощь в поисках...
   ws_mason
 
26 - 12.08.04 - 15:45
Вообще-то господа, создать генератор случайных чисел может только природа.
Нам же дано создать только генератор ПСЕВДОСЛУЧАЙНЫХ чисел.
А если серьезно, те кто занимался Спектрумом и читал Ревю должны помнить,
там даже была статья по поводу реализации такого генератора быстрого и псевдослучайного (с хорощим разбросом), постараюсь найти и выложить формулу.
   NS
 
27 - 12.08.04 - 19:56
(26) Какой ты умный! Череп не жмет?
   It is me
 
28 - 12.08.04 - 20:09
(26) Дайте плиз, определение случайного числа
   romix
 
29 - 12.08.04 - 20:15
(0) На http://1c.proclub.ru/ есть очень много внешних компонент для 1С, которые это (и много что еще) реализуют.
   NS
 
30 - 12.08.04 - 20:17
(29)В клубе профессионалов - всего две нормальные разработки - а все генераторы - дерьмо.
   romix
 
31 - 12.08.04 - 20:35
Библиотека мат. функций, где есть генератор сл. чисел:
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=92&lid=2688

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

(30) Не понял. Где там можно ошибиться? Рандомизатор - это стандартная сишная функция, которая есть во всех языках (кроме 1С).
   It is me
 
32 - 12.08.04 - 20:36
(30)"1. Все мужчины - козлы, все женщины - суки. 2. Встречаются исключения"
   427
 
33 - 12.08.04 - 22:19
А вот пусть мне хоть одна С....  пояснит - а накуа в 1С случайные числа?
 
  Рекламное место пустует
   NS
 
34 - 12.08.04 - 22:20
(33) Ты чё? не понимаешь?
Помимо игр - в учете  - чтоб сроки годности правдоподобно выглядели...
   427
 
35 - 12.08.04 - 22:21
хм.... пойду посмотрю, почему у меня они правдоподобные.... без генератора...
   romix
 
36 - 12.08.04 - 23:26
(33) Верно.

Последний раз у меня потребовали сделать случайную выборку товаров для контроля на складе. Я решил этого не делать, а выдал "самые частые" товары за последний месяц. Это подошло больше.
   NS
 
37 - 12.08.04 - 23:35
(36) Всё завистит от уровня...
Я тоже думал - а на хрена лохам случайные числа? Действительно не нужны...



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