Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: xury.zx6.ru
 Профиль | | #6
Добавлено: 12.11.06 18:01
да есть тут парочка ребят такого рода...
А вообще вопрос нравится. даже вчера хотел "первыйнаф" написать но опомнился
п.с. кажись я первый раз согласился с Фениксом :)

Ответить

Номер ответа: 7
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #7 Добавлено: 12.11.06 23:56
Я бы даже добавил

Randomize (Timer*Rnd*GetTickcount/timeGetTime)

Ответить

Номер ответа: 8
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #8 Добавлено: 13.11.06 01:44
Гм, а смысл?

Если хочется максимально случайных чисел, то нужно использовать генератор из Crypto API.

Ответить

Номер ответа: 9
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #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
Морфеус, никто и несобирался его в цикле использовать, к тому же, если даже нем заюзать
Randomize Timer * Rnd
все равно, будет разная последовательность.

Ответить

Номер ответа: 12
Автор ответа:
 Sacred Phoenix



ICQ: 304238252 

Вопросов: 52
Ответов: 927
 Профиль | | #12 Добавлено: 15.11.06 20:43
а смысл в рандомайз юзать Rnd?
при старте проги (рандомайза еще не было) rnd будет возвращать каждый раз одно и то же число. Таким образом, выражение Timer * Rnd будет зависеть только от Timer. Соответственно,
Randomize Timer * Rnd
будет аналогична
Randomize Timer

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам