Умные вопросы
Войти
Регистрация
как работает функция случайных чисел во всех языках программирования? (как е вызывать писать не надо)
9 года
назад
от
Сергей Лопатин
5 Ответы
▲
▼
0
голосов
в языке Ассемблер таковой нет-её пишут отдельно, в других это функция RND -в разных языках она работает по разному
в Бейсике MSX к примеру, данная функция за определенный промежуток времени опрашивает системный таймер, копирует число от 0 до 1 и все, ты просто его умножаешь на сто, делишь на что то другое чтобы получить нужный диапазон
в Паскале почти тоже самое с Фортраном
9 года
назад
от
Кажется Стерва
▲
▼
0
голосов
В низкоуровневых языках ГСЧ работают обычно на шумах. Ну, или пресловутый конгруэнтный метод (хотя, как показывает практика моделирования методом Монте-Карло, конгруэнтный генератор выдает псевдослучайные числа с приличной кореляцией, и поэтому лично я ЛКМ не доверяю) .
Высокоуровневые языки обычно своего ГСЧ не имеют, а юзают сответствующие функции ОСи, например, АПИ.
9 года
назад
от
Ксения Куракина
▲
▼
0
голосов
обычно в стандартных библиотеках используется линейный конгруентный датчик.
типа:
operator unsigned long () {
return lastVal = 3141592621UL*lastVal + 907633385ul;
}
lastVal сначала инициализируется отдельной функцией. Константы могут быть разные, но на них наложена куча ограничений (можно почитать в Кнуте) , так что лучше использовать готовые.
Датчик плохонький, особенно, если брать его младшие знаки, зато быстрый.
9 года
назад
от
Kitsy Sakiamy
▲
▼
0
голосов
Там вырабатываются не случайные, а псевдослучайные числа. Например, можно возводить предыдуще число в квадрат и брать из результат средние цифры. Но обычно используется линейный когруэнтный метод, дающий боле равномерное распределение чисел: предыдуще число умножается на какой-то множитель и добавляется константа, после чего результат обрубается сверху до заданного числа разрядов. Множитель и константа выбираются исходя из определенных математических сотношений, теория изложена у Кнута в третьем томе.
9 года
назад
от
Евгений Антонюк
▲
▼
0
голосов
Поучить действительно произвольные числа - весьма непросто. Для этого требуется специальное устройство и программа; это поэтому такой команды в ассемблерах навядли встретишь - это целая подпрограмма вызывается. А ус-во -генератор энтропии - в простых машинах, его роль может выполнять и таймер, и шум снятый с выхода аудиокарты - но по причине простоты таких устройств, несовершенстве алгоритма генерации, полученнные числа называют псевдослучайными - не исключена возможность повторяемости, коллизий и т. п.
9 года
назад
от
Максим Паламаренко
Связанные вопросы
1
ответ
Для чего нужны менопаузы? Почему у мужиков такого не бывает, как объяснить такой парадокс ?
8 года
назад
от
Андрей
1
ответ
Могут ли владельцы поисковиков не предоставить базы данных если попросят спецслужбы?
3 года
назад
от
Andrey K
1
ответ
Сравнивая ракетку и мячик можно сравнить с реактивным и активным сопротивлением? +
2 года
назад
от
Настя Бучака