Randomize

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Randomize

Сообщение Debugger » 04.04.2011 (Пн) 14:03

Код: Выделить всё
    Randomize 100500
    Debug.Print Rnd
    Randomize 100500
    Debug.Print Rnd

Я ожидал, что будет выведено два одинаковых числа (Random seed у них одинаковый). Но этого не произошло.
Что же на самом деле значит параметр Number у Randomize?

Added:
http://msdn.microsoft.com/en-us/library/8zedbtdt.aspx
Написано, что одинаковых чисел и не должно быть.
Но вопрос "почему?" остаётся открытым.

Added2:
Код: Выделить всё
    Dim c As Long, a(1000) As Single
    For c = 0 To 1000
        Rnd -1
        Randomize
        a(c) = Rnd
    Next
    For c = 0 To 1000
        Debug.Print a(c)
    Next

Randomize берет за основу Timer с низкой точностью. Первый цикл проходит очень быстро, значение Timer не успевает измениться, и массив оказывается заполнен одинаковыми числами.
Так же будет и в других языках?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Randomize

Сообщение alibek » 04.04.2011 (Пн) 16:54

Debugger писал(а):Так же будет и в других языках?

Каких языках?
Lasciate ogni speranza, voi ch'entrate.

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Randomize

Сообщение Debugger » 04.04.2011 (Пн) 20:38

Языках программирования, конечно.
Delphi 6 - тоже по неточному таймеру.
Delphi7/10 - работают лучше, возможно, через QueryPerformanceCounter.
Как дела с семейством Си?

Vova_2581
Постоялец
Постоялец
 
Сообщения: 376
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Randomize

Сообщение Vova_2581 » 04.04.2011 (Пн) 21:00

http://msdn.microsoft.com/ru-ru/library/f7s023d2(v=vs.90).aspx
Debugger писал(а):Что же на самом деле значит параметр Number у Randomize?

Произвольный вход в таблицу ряда чисел rnd.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 94

    TopList