![]() |
![]() |
![]() |
|
Как сделать 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) Всё завистит от уровня...
Я тоже думал - а на хрена лохам случайные числа? Действительно не нужны... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |