|
Алгоритм генерации случайных чисел | ☑ | ||
|---|---|---|---|---|
|
0
DjSpike
03.12.05
✎
15:18
|
Кто нибудь подскажите алгоритм генерации случайных чисел на языке 1с
|
|||
|
1
Нач_8_0___
03.12.05
✎
15:21
|
Нужна ли генерация по какой либо закономерности? Если нет бери время и колбась его. :-)
|
|||
|
2
DjSpike
03.12.05
✎
15:25
|
А пример можешь привести. Нужно случайно выбирать число и диапазона от 1 до N. При это нельзя чтобы числа повторяличь.
|
|||
|
3
skunk
03.12.05
✎
15:25
|
по пиарим богов наших...
//******************************************* // Глобальная переменная. // var GlSeed; //******************************************* // Random(MaxValue) // // Параметры: // MaxValue - Число. Максимальное число. // // Возвращаемое значение: // Целое число из диапазона от 1 до MaxValue. // // Описание: // Возвращает целое число из диапазона от // единицы до значения в MaxValue. // function Random(MaxValue) // Проверим первый ли раз вызываем. // Если да, то проинициализируем GlSeed. if emptyvalue(GlSeed) = 1 then GlSeed = _getperformancecounter(); endif; // Ну а дальше сообственно алгоритм. // Предложен комитетом ANSI-C. // Реализация на языке 1С avb GlSeed = GlSeed * 1103515245 + 12345; return ((GlSeed / 65536) % 32768) % MaxValue + 1; endfunction |
|||
|
4
lisss
03.12.05
✎
15:27
|
||||
|
5
DjSpike
03.12.05
✎
15:28
|
_getperformancecounter() - что этот оператор. я его не встречал в ЖКК.
|
|||
|
6
skunk
03.12.05
✎
15:29
|
его там и нет... но он работает
|
|||
|
7
Wasya
03.12.05
✎
15:30
|
Может кто подскажет, а как решить такую задачу:
Есть документы за какой то период. Как из них выбрать случайным образом заданное количество документов. |
|||
|
8
Нач_8_0___
03.12.05
✎
15:33
|
В первом приближении можно так. Закидываешь ссылки на документы в ТЗ. Потом генеришь не повторяющиеся значения от 1 до N. Это будут номера строк в ТЗ.
|
|||
|
9
Нач_8_0___
03.12.05
✎
15:34
|
Где N - количеств документов. А генерировать надо M чисел.
|
|||
|
10
skunk
03.12.05
✎
15:39
|
можно так...
1. выбираешь доки в СЗ... 2. генеришь число от 1 до Размера списка... 3. док перемещаешь из СЗ куда надо 4. проверяешь на количество доков... если макс не достигнут, тогда шаг 2 |
|||
|
11
DjSpike
03.12.05
✎
15:39
|
skunk огромное спасибо за алгоритм. все работает на ура.
|
|||
|
12
skunk
03.12.05
✎
15:41
|
спасибо не мне... автор Рупор Абсурда... алгоритм из всех видиных, самый рульный... у богов иначе не бывает...
|
|||
|
13
G-Re
03.12.05
✎
17:25
|
На всякий случай. Стандартные генераторы генерят, как правило, числа, равномерно распределенные на интервале (0,1), или (0,N), но если нужно реализавывать другие распределения(плотности), то нужно самому писать соответствующие преобразования равномерно распределенных в нужную плотность.
|
|||
|
14
quest
03.12.05
✎
17:53
|
А если вспомнить Кнута, то он говорил что найти алгоритм генерации случайных чисел все равно что попытаться описать Бога арифметикой.
Насколько помню есть несколько алгоритмов генерации криптографически стойкой последовательности чисел. В книжке "Прикладная криптография" Брюса Шнайдера они были |
|||
|
15
skunk
03.12.05
✎
17:58
|
Кнут... UTF8 и 1С... хм...
|
|||
|
16
quest
03.12.05
✎
18:28
|
(15) Причем здесь хм? Каждый день разные задачи. А UTF, flex, doxygen - это для субя. Кнута изучал в универе
|
|||
|
17
skunk
03.12.05
✎
18:31
|
ясно... просто я Кнута не изучал... точнее в универе не учился..
|
|||
|
18
NS
03.12.05
✎
18:40
|
(3,12) В его алгоритме есть ошибка - из за неё (постоянное увеличение GlSeed)
со временем (с каждой следующей генерацией) алгоритм замедляется, и со временем - у него всё сильнее уменьшается период.... |
|||
|
19
NS
03.12.05
✎
18:42
|
Как написать генератор случайных чисел на 1С?
Вот здесь - его подправленный алгоритм. Функция random() // выдает случайное число 0 <= rand < 1 // интерпретация интерпритации AVB // выдает последовательности лучше, и работает быстрее. // (не замедляется) // дело в том, что у него возникают очень большие числа, // а 1С некокорректно с ними работает (операция %) randSeed=(randSeed*1103515245+12345)%2147483648; возврат randSeed/2147483648; КонецФункции |
|||
|
20
skunk
03.12.05
✎
18:43
|
(18)в тех задачах, что использовал его хватало... да и зачем он реально нужен для задач решаемых в 1С...
|
|||
|
21
skunk
03.12.05
✎
18:44
|
(19)спасибо... исправим...
|
|||
|
22
NS
03.12.05
✎
18:44
|
(20) В задачах решаемых на 1С генератор псевдослучайных чисел действительно бывает нужен.
|
|||
|
23
skunk
03.12.05
✎
18:45
|
(22)например...
|
|||
|
24
NS
03.12.05
✎
18:48
|
(23) Например метод Монте-Карло.
Затем любые способы мухлежа (чтоб в глаза не бросалось) |
|||
|
25
G-Re
03.12.05
✎
18:49
|
(22) 1C - это одно из средств материализации мыслей, поэтому, если в мыслях есть RND, Sin, Log... и пр. математика, нужно уметь их реализовывать.
|
|||
|
26
skunk
03.12.05
✎
18:54
|
теория чисел... разложения на множители... зачем это в 1С... не понимаю...
|
|||
|
27
skunk
03.12.05
✎
19:35
|
(24)нашел книжку "Monte Karlo Methods in Finance" для оценки финансовых рисков... не ужто в 1С такие вещи делаешь...
все таки она не много для другого орентирована... |
|||
|
28
AAAChel
03.12.05
✎
21:01
|
(11)а если не секрет, что за постановка задачи, просто интересно. Зачем псевдослучайная выборка документов? Аудиторы и органы вроде из ящика бумажные доки вынимают.
(27)Мне тоже кажется, что для этих целей надо пользоваться мощными специализированными программами, одно дело число посчитать в интервале (0,1), другое дело статистический анализ |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |