Имя: Пароль:
1C
 
Как сделать 1С-ке генератор случайных чисел ?
0 cat
 
12.08.04
07:32
Привет всем!
Подскажите пож-та... можно ли сделать в 1С-ке генератор случайных чисел или есть ли такая команда как "randomize timer"
1 Эмблема форума
 
12.08.04
08:09
Первый день сегодня в интернете? ...
Поздравляю с почином!
2 Petro
 
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))
КонецЦикла
6 427
 
12.08.04
08:30
Ну это давно говорили... Ну нет в 1С нормального датчики псевдослучайных чисел...
7 Эмблема форума
 
12.08.04
08:33
(6) Те что я предложил и Соарон - вполне сносно работают ...
8 427
 
12.08.04
08:34
А я спорю? Это по поводу приведенного в 2 алгоритма...
9 Petro
 
12.08.04
08:47
Как это можно по 20-и 3-х битным числам определить дерьмовость алгоритма ?
Может пару суток покрутить? Вот тогда и можно утверждать что-нибудь.
10 Эмблема форума
 
12.08.04
08:52
(9) Запусти пару раз и поймёшь ...
11 NS
 
12.08.04
13:35
(7) То, что предложл ты - тормозит как сволочь!!!
Метод выравнивания быстродействия - я выкладывал на Мисте.
12 Эмблема форума
 
12.08.04
13:40
(11) Я знаю ..., я там написал ... :))
Кста, вот ещё способ: http://1c.realnet.ru/cgi-bin/forum.cgi?ask=992#18
13 NS
 
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)+ Причём очень дрянная! Дрянней мне пока вроде не попадалось ...
16 NS
 
12.08.04
14:18
(14) Это твой алгоритм, и последовательность он выдает такую-же, как и без первого мод-а, только "несколько быстрее" - насколько быстрее - можешь проверить сам... на 100000 элементах.
17 Эмблема форума
 
12.08.04
14:23
(16) Наверняка, быстрее ...
Но зато последовательность на случайную уже даже на первый взгляд непохожа ...
18 NS
 
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) уже больше года ...
20 NS
 
12.08.04
14:47
(19) То есть за последний год - программирование сделало большой шаг вперед, и наконец-то открыт способ "перемешивания" пяти чисел?
Вечером проверю генератор - что-то ты меня паришь...
Способ без обрезания RandSeed - за сутки 100000 случайных чисел не выдаст...
21 cat
 
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) пост
23 NS
 
12.08.04
14:53
(0)Не парься, пиши генератор на 1С - будет не хуже, и быстрее ;-)
24 cat
 
12.08.04
15:29
Ранд=_GetPerformanceCounter()%(100+1);
похоже это лучшеее
25 cat
 
12.08.04
15:29
всем спасибо за помощь в поисках...
26 ws_mason
 
12.08.04
15:45
Вообще-то господа, создать генератор случайных чисел может только природа.
Нам же дано создать только генератор ПСЕВДОСЛУЧАЙНЫХ чисел.
А если серьезно, те кто занимался Спектрумом и читал Ревю должны помнить,
там даже была статья по поводу реализации такого генератора быстрого и псевдослучайного (с хорощим разбросом), постараюсь найти и выложить формулу.
27 NS
 
12.08.04
19:56
(26) Какой ты умный! Череп не жмет?
28 It is me
 
12.08.04
20:09
(26) Дайте плиз, определение случайного числа
29 romix
 
12.08.04
20:15
(0) На http://1c.proclub.ru/ есть очень много внешних компонент для 1С, которые это (и много что еще) реализуют.
30 NS
 
12.08.04
20:17
(29)В клубе профессионалов - всего две нормальные разработки - а все генераторы - дерьмо.
31 romix
 
12.08.04
20:35
Библиотека мат. функций, где есть генератор сл. чисел:
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=92&lid=2688

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

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

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