Страница: 1 |
Страница: 1 |
Вопрос: Последовательность RND
Добавлено: 12.11.06 05:27
Автор вопроса: HACKER
А rnd без Rednomize timer при любом расположении звёзд будет давать одинаковую последовательность?
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
JMP
Вопросов: 6
Ответов: 171
Профиль | | #1
Добавлено: 12.11.06 06:58
лучше использовать SID-константу в RANDOMIZE
как RANDOMIZE 12345, тогда генерируемая псевдопоследоваельность всегда будет одинаковая для этого SID
Номер ответа: 2
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #2
Добавлено: 12.11.06 07:45
Давно мучал вопрос - почему все бедный Rnd называют не просто случайное число, а псевдослучайное число?
Номер ответа: 3
Автор ответа:
JMP
Вопросов: 6
Ответов: 171
Профиль | | #3
Добавлено: 12.11.06 08:27
Давно мучал вопрос - почему все бедный Rnd называют не просто случайное число, а псевдослучайное число?
Доказательство:
#COMPILE EXE
#DIM ALL
'
FUNCTION PBMAIN () AS LONG
LOCAL lTmp,lCount,lSeed AS LONG
LOCAL sTmp AS STRING
'
lSeed = 5
'
RANDOMIZE lSeed
'
FOR lCount =1 TO 10
sTmp = sTmp + $CRLF + STR$(RND(1,5))
NEXT
'
MSGBOX sTmp
END FUNCTION
Если seed для RANDOMIZE все время одинаковый, то
каждый запуск програмы будет возвращать одну и ту же псевдо-случайную последовательность. Очень кстати удобно применяя seed value как пароль, в принципе RC4 приблизительно по такому принципу работает. Ну а если нужно действительно случайное, то RANDOMIZE timer
Номер ответа: 4
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #4
Добавлено: 12.11.06 17:08
Спасибо JMP!
Номер ответа: 5
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #5
Добавлено: 12.11.06 17:38
EROS бы сейчас сказал: "Эх, кто-кто, а HACKER давно не новичок и такие вещи должен знать" )
Номер ответа: 6
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #6
Добавлено: 12.11.06 18:01
да есть тут парочка ребят такого рода...
А вообще вопрос нравится. даже вчера хотел "первыйнаф" написать но опомнился
п.с. кажись я первый раз согласился с Фениксом
Номер ответа: 7
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #7
Добавлено: 12.11.06 23:56
Я бы даже добавил
Номер ответа: 8
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #8
Добавлено: 13.11.06 01:44
Гм, а смысл?
Если хочется максимально случайных чисел, то нужно использовать генератор из Crypto API.
Номер ответа: 9
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #9
Добавлено: 13.11.06 02:43
чё за...
Randomize Timer ?!!???!?!?!?!?!?
ладно это если один раз вызвать... а если как многие грили - после каждого вызова рнд! Это ж самоубийство, ведь цикл например тикает гораздо быстрее таймера так что получим мы не повторную последовательность а тупо что то типа вот такого:
4 4 4 4 4 4 5 5 5 5 5 5 6 6 6 6 6
рандомайз имхо можно делать только раз - при загрузка формы. вот.
Номер ответа: 10
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #10
Добавлено: 14.11.06 11:50
ну вообще-то так и делают...
Я просто думал? что генератор случ. чисел привязан не только к sid... т.е. при Randomize Timer в одно и тоже время (это конечно мало возможно), ну или Randomize sid... так последовательность на разных компах всеравно будет разная Ну оказалось что нет, вопрос вообщем-то исчерпан
Номер ответа: 11
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #11
Добавлено: 15.11.06 14:50
Морфеус, никто и несобирался его в цикле использовать, к тому же, если даже нем заюзать
Номер ответа: 12
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #12
Добавлено: 15.11.06 20:43
а смысл в рандомайз юзать Rnd?
при старте проги (рандомайза еще не было) rnd будет возвращать каждый раз одно и то же число. Таким образом, выражение Timer * Rnd будет зависеть только от Timer. Соответственно,
Randomize Timer * Rnd
будет аналогична
Randomize Timer