powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Почему у Rnd цикл именно 2^24?
6 сообщений из 6, страница 1 из 1
Почему у Rnd цикл именно 2^24?
    #39995906
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простейший тест

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim i As Long, x As Single
Let i = 1
Let x = Rnd(-Time)

Do
    Let i = i + 1
    If Rnd = x Then
        Debug.Print i, x, Log(CDbl(i-1)) / Log(2)
        Stop
    End If
Loop

-- всегда останавливается при i = 16777217, что есть 2^24+1...

Почему именно 2^24?
...
Рейтинг: 0 / 0
Почему у Rnd цикл именно 2^24?
    #39995919
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS,

такова реализация. Можно посмотреть реализацию в библиотеке Microsoft.VisualBasic.dll из .NET, она должна соответствовать функции Rnd из VB6.
...
Рейтинг: 0 / 0
Почему у Rnd цикл именно 2^24?
    #39996019
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, прочитал в справочнике, что мантисса числа типа Single как раз содержит 24 бита...

То есть правильно ли я понял, что Rnd перебирает именно все мантиссы чисел типа Single?
...
Рейтинг: 0 / 0
Почему у Rnd цикл именно 2^24?
    #39996029
ATM-TURBO 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Почему у Rnd цикл именно 2^24?
    #39996076
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Почему у Rnd цикл именно 2^24?
    #39997308
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ответил тут
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Почему у Rnd цикл именно 2^24?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]