Здравствуйте,
Я давно знал команду "Random", но задумался не давно, как это компьютер (любая вычислительная машина) может генерировать случайные символы (числа, буквы и т. д.) . Только человек (и животные выбирая, допустим, куда идти) может генерировать случайные символы. Компьютер же да и любая машина выполняет только те команды, которые заложены в него человеком. При влиянии внешних факторов генерация случайных символов возможно (например: Диск, делённый на n равных секторов, на каждом из которых написан 1 символ, врашается вокруг своей оси. От центра диска проведён лучь. Затем воздействие из вне останавливает диск. Случайный символ берётся с сектора, на котором оказывается лучь, проведённый из центра диска и неменяющий своего положения) . Но я не могу представить, как машина может без воздействия внешних факторов генерировать случайные символы.
Объясните мне принцип действия команды "Random", которая выполняется компьютером без воздействия внешних факторов.
Спасибо...
Другие языки программирования и технологии
Random
Первая попытка Intel сделать лучший генератор случайных чисел на обычных ПК датируется 1999-м годом, когда компания Intel представила компонент Firmware Hub для чипсетов. Генератор случайных чисел в этом чипе (PDF) представляет собой аналоговый дизайн на базе кольцевого осциллятора, который регистрирует тепловой шум с резисторов, усиливает его и использует результирующий сигнал для изменения периода относительно медленного генератора тактовых импульсов. На каждый непредсказуемый «тик» этого медленного генератора микросхема накладывала частоту колебаний второго, быстрого генератора, который регулярно меняет своё значение между двумя бинарными состояниями: 0 и 1. В результате получается непредсказуемая последовательность нулей и единиц.
как-то так, числа не случайны естественно, они псевдослучайны как уже было сказано.
как-то так, числа не случайны естественно, они псевдослучайны как уже было сказано.
Eraly Baktubaev
в мозге числа не генерируются случайным способом, там вообще нет случайностей, поведение человека строго предопределено.
рандом для задания начального значения использует системный таймер, который отсчитывает миллисекунды. Далее всё происходит по заданному алгоритму, числа которые он генерирует - псевдослучайные, т. е. зная алгоритм их можно вычислить, а простому пользователю кажется, что эти числа генерируются в случайном порядке! Т. е. если не использовать таймер, то рандом будет выдавать одну и ту же последовательность постоянно.
Возможно, статья будет интересна.
Суть в том, что это называется генератором _псевдослучайных_ чисел. Например на моём Linux'е, таким источником может служить файл /dev/random, который использует "случайные" события драйверов (например аппаратных прерываний сетевой карты) для генерации чисел.
Некоторые берут из времени системного и его преобразовывают.
Иван Цапкин
А если допустим в 1 секунду команда "Random" будет выполнена, то символ будет один и тот же???
+ за вопрос, самому интересно стало)
Похожие вопросы
- Как сделать Random в C#
- Проблема с оператором random в паскале
- Класс Math и его метод random
- Чем отличаются (randomize; и random;)?
- random в С++
- С++ Random(); Random(); Как задать диапазон значений от -116 до 950?
- народ поделись кодом на асме которым С++ считает функцию random()
- Как работает random?
- Почему не работает Random на Си
- КАК С ГЕНЕРИРОВАТЬ ДВА МАССИВА ИЗ СЛУЧАЙНЫХ ЧИСЕЛ С ПОМОЩЬЮ RANDOM НА ЯЗЫКЕ СИ? Я смог только заполнить от 0 до 255