К СЧ: различия между версиями
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) |
||
Строка 39: | Строка 39: | ||
Из книги Я.К. Трохименко [[Программируемые микрокалькуляторы. Устройство и пользование. (книга)|«Программируемые микрокалькуляторы. Устройство и пользование.»]] (стр. 125): | Из книги Я.К. Трохименко [[Программируемые микрокалькуляторы. Устройство и пользование. (книга)|«Программируемые микрокалькуляторы. Устройство и пользование.»]] (стр. 125): | ||
«К операторам набора чисел относятся | «К ''операторам набора чисел'' относятся … и СЧ для вызова квазислучайного числа с равномерным распределением в интервале (0,1). В связи с выбранным алгоритмом формирования квазислучайных чисел при некоторых сочетаниях операторов искомая последовательность таких чисел не образуется и приходится переставлять операторы или вводить дополнительные операторы после оператора СЧ.» | ||
== Ссылки == | == Ссылки == |
Текущая версия от 06:42, 24 августа 2021
Команда К СЧ | |
К СЧ | |
Код команды | 3B |
Русская мнемоника | К СЧ |
Латинская мнемоника | K RAN |
Группа команд | загрузка чисел в стек |
Число операндов | нульместная |
Нажимаемые клавиши | К В↑ |
Число шагов | 1 |
Признак перезаписи | сбрасывается |
Первое появление | МК-61 |
Время выполнения | ? |
Скорость выполнения | ? команд/с |
Команда К СЧ (лат. K RAN) «Генерация случайного числа от 0 до 1» с кодом 3B записывает в регистр X очередное значение случайного числа с равномерным распределением в диапазоне от 0 до 1, включая значение 0, исключая 1. Стек поднимается, предыдущее значение регистра X также записывается в X1.
На МК-161 с прошивкой 1.20 (08.07.14) команда К СЧ выполняется за 2364,3 мкс (38,6 КНОП), 423 команды/с.
История[править]
Команда К СЧ впервые появилась в ПМК МК-61 и МК-52, где вызвала многочисленные нарекания владельцев. Она была существенно доработана в «Электронике МК-152», замеченные недочёты устранены.
Генератор случайных чисел К СЧ в советских ПМК имел слишком короткий период, и был склонен к зацикливанию в пределах одного-двух чисел при использовании в реальных программах. На результат его работы влияли другие команды, начинающиеся с клавиши K , а также содержимое регистров памяти и стека. К примеру, команда K max с нулевыми аргументами вызывала повторение последовательности чисел с одного и того же значения 0,404067. Эта же последовательность выдавалась после включения питания. По данным разработчиков ПМК, сотрудников киевского ПО «Кристалл», в этом случае генератор выдавал 89 неповторяющихся чисел и далее зацикливался с периодом 145 чисел («Наука и жизнь», №6 - 1989г.). В связи с этим по прямому назначению команда практически не использовалась.
По мнению Л. Титова (Красноярск) («Наука и жизнь», №6 - 1989 г.) для генерации псевдослучайных чисел в советских ПМК использовано соотношение:
ξi+1 = {10(ξi + Y + X7)/3 + 0,404067},
где ξi+1 - очередное случайное число,
ξi - предыдущее случайное число,
Y - модифицированное содержимое регистра Y,
X7 - цифра, находящаяся в седьмом разряде регистра X.
В ЭКВМ применен генератор на основе регистра сдвига с периодом порядка нескольких миллионов случайных чисел. Последовательность не повторяется после выключения-включения питания, но может быть инициализирована и воспроизведена после обращения к специальной функции.
В советских ПМК при выполнении команды К СЧ происходит замещение содержимого регистра X, а в ЭКВМ подъём стека, что следует учитывать при переносе программ. При переносе программ МК-61 и МК-52 на ЭКВМ старую команду К СЧ часто можно заменить последовательностью FR КСЧ.
Советская реализация[править]
Из книги Я.К. Трохименко «Программируемые микрокалькуляторы. Устройство и пользование.» (стр. 125):
«К операторам набора чисел относятся … и СЧ для вызова квазислучайного числа с равномерным распределением в интервале (0,1). В связи с выбранным алгоритмом формирования квазислучайных чисел при некоторых сочетаниях операторов искомая последовательность таких чисел не образуется и приходится переставлять операторы или вводить дополнительные операторы после оператора СЧ.»