![]() |
![]() |
![]() |
|
Задача получить случайное значение из интервала чисел на V7 | ☑ | ||
---|---|---|---|---|
0
Kudr
05.05.06
✎
10:51
|
Задача получить случайное значение из интервала чисел на V7.
Например есть 1,007 и 3,14 необходимо получить случайное число из заданного диапазона. Вообщем если у кого есть готовое решение буду благодарен. |
|||
1
Широкий
05.05.06
✎
10:52
|
Фто? Приход "по-черному" делаем?
|
|||
2
Zmich
05.05.06
✎
10:53
|
||||
3
Asmody
05.05.06
✎
10:54
|
тока хотел сказать "кто быстрее даст ссылку на mszsuz'а" :)
|
|||
4
NS
05.05.06
✎
11:06
|
(3) На Сеньере нет ни одного нормального генератора ;-)))
|
|||
5
Kudr
05.05.06
✎
12:36
|
Спасибо за реакцию, от 1 до другого целого числа более менее понятно, а вот как например от 5 до17.
Неужели тупо прибавлять к минимальному значению. А случайное дробное число, так же тупо генерить каждый разряд? Может есть я чего не понимаю. |
|||
6
NS
05.05.06
✎
12:44
|
(5) Путь есть функция Рандом() Выдающее случайное число 0<=Сл<1
Тогда чтоб получить случайное число в интервале [а,в) выполняется наисложнейшая формула а+Рандом()*(в-а); А Чтоб получить ЦЕЛОЕ случайное число в интервале а..в Еще более сложная а+Цел(Рандом()*(a-в+1)) |
|||
7
NS
05.05.06
✎
12:45
|
Блин - есно запутался в этих сложнейших формулах...
А Чтоб получить ЦЕЛОЕ случайное число в интервале а..в а+Цел(Рандом()*(в-а+1)) |
|||
8
ппрролдд
05.05.06
✎
12:48
|
(6) частота получения целого числа в меньше, чем а,а+1,...,в-1
|
|||
9
NS
05.05.06
✎
12:48
|
(8) Абсолютно равна.
|
|||
10
NS
05.05.06
✎
12:50
|
Смотрим, допустим - а=2 в=5
2+цел(Рандом()*4) 2 - Рандом() [0.00,0.25) 3 - Рандом() [0.25,0.50) 4 - Рандом() [0.50,0.75) 5 - Рандом() [0.75,1.00) |
|||
11
ппрролдд
05.05.06
✎
12:51
|
(9) в v7 арифметика ограниченной значности. Пишем программку с проверим на факте?. (у меня правде есть только v8)
|
|||
12
Kudr
05.05.06
✎
12:54
|
Спасибо ещё раз.
Видимо я действительно не всё знаю и понимаю функция Рандом() которая выдает случайное число 0<=Сл<1 мне не известна Можно ещё раз по буквам _GetPerformanceCounter()%(а+1) для интервала от 0 до а в ЦЕЛЫХ числах работает , а вот для дробных значений затыка... |
|||
13
NS
05.05.06
✎
12:56
|
(11) ?????? Ты о чем????
Что проверять? Сколько можно проверять? Чушь несешь!!!! |
|||
14
Kudr
05.05.06
✎
12:56
|
Ну надо же пока набивал, да переваривал скока инфы для информации выдали...
|
|||
15
NS
05.05.06
✎
12:57
|
(12) ГетПерформанс даст очень плохую последовательность....
|
|||
16
smaharbA
05.05.06
✎
12:58
|
Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
Скрипт.Language="javascript"; Математика=Скрипт.Eval("Math"); Сообщить(Математика.random(0)); |
|||
17
Kudr
05.05.06
✎
12:59
|
(15) блин тогда сначала
Пожалуйста (если не сложно) ещё раз код лучшего варианта Рандом() |
|||
18
ппррролддд
05.05.06
✎
13:00
|
(13) при ограниченном числе знаков, выдаваемом рандом() хвостик диапазона обрезается, и последннее целое число диапазона выпадает реже
|
|||
19
NS
05.05.06
✎
13:00
|
перем randseed;
Процедура randomize(а=0) // сбрасывает генератор Если а=0 тогда randSeed=_getPerformanceCounter(); Иначе randseed=а; КонецЕсли; КонецПроцедуры // ************** Функция random() // выдает случайное число 0 <= rand < 1 randSeed=(randSeed*1103515245+12345)%2147483648; возврат randSeed/2147483648; КонецФункции |
|||
20
smaharbA
05.05.06
✎
13:00
|
(17) -> (16)
|
|||
21
Kudr
05.05.06
✎
13:05
|
Слушайте коллеги, огромное Вам спасибо что Вы есть, думаю мне пока информации достаточно. Пошол переваривать и применять...
Отдельное спасибо NS и smaharbA |
|||
22
NS
05.05.06
✎
13:06
|
(18) Посчитать тебе вероятность на основании 19?
Для случая (10) 2 Randseed 0..536870911 - 536870912 значений 3 Randseed 536870912..1073741823 - 536870912 значений 4 Randseed 1073741824..1610612735 - 536870912 значений 5 Randseed 1610612736..2147483647 - 536870912 значений Абсолютно одинаковая вероятность... Для 5 значений - Будет разброс +-0.0000001% |
|||
23
ппрроолдд
05.05.06
✎
13:08
|
(22) особенно убедительно будет при:
Функция random() // выдает случайное число 0 <= rand < 1 randSeed=(randSeed+1)%6; возврат randSeed; КонецФункции |
|||
24
NS
05.05.06
✎
13:09
|
(23) Не понял - ты прикидываешься, или всё действительно настолько плохо?
|
|||
25
NS
05.05.06
✎
13:10
|
(23) Кстати - "%" ну никак тебе не вернет случайное число в диапазоне указанном в комментарии. Даже поделить на 6 забыл...
|
|||
26
ппррролдд
05.05.06
✎
13:12
|
(24) а , что, генератор в (19) настолько хорош, что других не бывает? Все генераторы псевдослучайеных чисел типа (19) выдают циклическую последовательность.
|
|||
27
прролдд
05.05.06
✎
13:13
|
(25) извини, коньяку укушался. У меня метода - спать не ложусь, жду пока организм переработает алкоголь, тогда с утра как огурчик!!!
|
|||
28
NS
05.05.06
✎
13:21
|
(26) Генератор в 19 очень хорош -
http://www.yandex.ru/yandsearch?rpt=rad&text=1103515245 http://www.yandex.ru/yandsearch?rpt=rad&text=1103515245 http://www.google.ru/search?hl=ru&q=1103515245+ANSI&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr= http://www.yandex.ru/yandsearch?text=1103515245+ANSI&stype=www |
|||
29
Волшебник
модератор
05.05.06
✎
13:22
|
ТелепатБот, скажи, как в 1С реализовать генератор случайных чисел
|
|||
30
ТелепатБот
гуру
05.05.06
✎
13:22
|
||||
31
NS
05.05.06
✎
13:31
|
(26) Да, цикличесвая последовательность из 2147483648 значений ;-))) Долго будешь дожидаться повторения цикла ;-)))
|
|||
32
romix
модератор
05.05.06
✎
15:03
|
Я делал при помощи ВК.
http://x-romix.narod.ru/Events.rar |
|||
52
ппрролдд
06.05.06
✎
12:37
|
(31) врядли одно 2147483648 значений попадет в "критический" диапазон, откусываемый в (6) при округлении, что ты и доказал в (22).
по настоящему хороший генератор в (6) должен слегка туфтить :) |
|||
53
прпрооллдд
06.05.06
✎
12:41
|
+(52) извените, дложно быть написано:
"врядли хотя бы одно, не говоря уж о статистически значимом количестве из 2147483648 значений..." |
|||
54
NS
06.05.06
✎
13:33
|
(53) Ничего не понял. В какой диапазон? Что не попадет????
|
|||
55
Лямур
06.05.06
✎
13:34
|
(0)А Microsoft нам не поможет?
|
|||
57
пппррролддд
10.05.06
✎
11:10
|
(54) Идея подкола в (8) была такая:
при достаточно большом диапазоне - числе (в-а), например равном 1000...0000, ошибка округления (вызванная ограниченным числом знаков арифметики) в выражении Рандом()*(в-а), может быть достаточно большой, настолько, что а+Цел(Рандом()*(в-а)) будет выдавать целое число (в) статистически значимое меньшее число раз, чем другие числа диапазона. Но и генератор чисел рандом() должен быть достаточно хорош, чтобы диапазон, отсекаемый при округлении (двадца... знак после запятой) для него играл какую то роль - чтобы в этот диапазон попадали числа из последовательности псевдослучайных чисел, генерируемых им. Поэтому 2147483648 значений - маловато для проверки :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |