Техника

Как работает RANDOM? почему числа получаются случайными? мы еще в школе в 2000 в qbasic ставили RANDOMISE TIMER какой-то

Для генерации случайных чисел в массиве.
в бейсике и прочих языках программирования обычно зашиты генераторы не случайных, а так называемых псевдослучайных чисел. для получения этих чисел используются детерминированные алгоритмы. так что последовательности будут не случайные, а вполне себе определенные.

например, мультипликативный генератор псевдослучайных чисел имеет простую формулу:
Xₙ = (Xₙ₋₁ * N) mod M
где Xₙ - очередное случайное число, Xₙ₋₁ - случайное число, полученное на предыдущем шаге, N и M - какие-то константы.
если функция, использующая этот генератор, будет возвращать Xₙ/M, и константы подобраны хорошо, никто не заметит, что числа не очень-то случайные.

например, N = 244140625, M = 65536
задаём X₀ = 123 (тот самый RANDOMISE)
получаем Xₙ/M:
0,001876831
0,706710815
0,17326355
0,339035034
0,141525269
0,518234253
0,406661987
0,744308472
0,468673706
0,51725769
0,827560425
0,337081909
0,983322144

а RANDOMISE TIMER просто инициализирует X₀ текущим значением системного таймера. зачем это нужно вызывать явно? например, для отладки. при каждом запуске программы одно и то же начальное значение X₀ будет порождать одну и ту же последовательность - это удобно при отладке алгоритмов, использующих генератор.

а аппаратные генераторы случайных чисел - штуки дорогие, поскольку генерируемые ими последовательности должны быть не какие попало, а удовлетворять всяким разным критериям (равномерности, например).
Валентин Лелеко
Валентин Лелеко
72 412
Лучший ответ
Они не случайные, они ПСЕВДОслучайные. То есть, цикличность их достаточно велика, чтобы не повторяться в пределах данного приложения. И закономерности в их цепочке ЕСТЬ, просто не бросаются в глаза. На самом деле, генерировать действительно случайные числа - задача не примитивная. Лучше всего пока что - оцифровывать шумовые помехи.
AZ
Adilet Zhanbirbaev
68 564
Все компьютерные алгоритмы генерации рандома на самом деле его не генерируют. Данные из любого алгоритма генерации ПСЧ рано или поздно повторятся. Для этого нужно аппаратное устройство, например, оцифровывать какой нибудь естественный шум.
Обычно используется цепочка последовательных сдвигов с обратными связями по какому-то условию
Anton Klyev
Anton Klyev
81 633
Они и не получаются случайными. Это псевдослучайные числа, считаются по формуле, дающей для каждого нового значения число, которое трудно угадать, не зная формулы.
Берётся какой-то источник энтропии (у компа - показания системных часов, например, у МК часто - показания ПАЦ), подставляются в формулу случайного числа (гугли - математические ГСЧ), и получают "случайное" значение.
от грозовых разрядов в атмосфере. несколько вышек по европе. гугли
Павел Сабиров
Павел Сабиров
49 552
они на самом деле псевдослучайны, потому что должны выдаваться по какому-то закону...