как работает функция случайных чисел во всех языках программирования? (как е вызывать писать не надо)

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 года назад от Максим Паламаренко

Связанные вопросы