Как создать программу генератор случайных чисел

Работа в электронных таблицах

Вам нужно сгенерировать серию случайных чисел? Excel делает это легко и просто. Вот как создать генератор случайных чисел в Excel.

Вам нужно создать список случайных чисел? Если это так, довольно легко создать генератор случайных чисел с помощью Excel.

Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)

Вы можете быстро сгенерировать набор случайных целых чисел между двумя значениями по вашему выбору. Вы также можете генерировать случайные десятичные значения или даже создавать случайный список каждого значения от 1 до 20.

Если вы готовы к случайным числам, вот как создать генератор случайных чисел в Excel.

Как генерировать случайные числа в Excel, используя СЛУЧМЕЖДУ

Если вы хотите генерировать случайные числа в определенном диапазоне, СЛУЧМЕЖДУ функция это быстрый и простой способ сделать это. Это позволяет вам генерировать случайные целые числа между любыми двумя выбранными вами значениями.

Генератор случайных чисел на Python.

Чтобы сгенерировать случайные числа в Excel, используя СЛУЧМЕЖДУ:

  1. Нажмите на ячейку, где вы хотите, чтобы ваше первое случайное число появилось.
  2. Тип =СЛУЧМЕЖДУ(1500) заменив «1» на наименьшее случайное число, которое вы хотите сгенерировать, и «500» на наибольшее.
    край excelмежду
  3. Нажимать Входить и будет сгенерировано случайное число в диапазоне.
    случайное значение
  4. Нажмите и удерживайте маленький квадрат в правом нижнем углу ячейки и перетащите вниз, чтобы заполнить столько ячеек, сколько хотите, одной и той же формулой.
    ручка перетаскивания excel
  5. Числа будут восстанавливаться каждый раз, когда вы вносите изменения в Excel. Если вы хотите сохранить их прежними, скопируйте и вставьте свою формулу в качестве значений.
    эксель случайные числа

Как генерировать случайные числа в Excel, используя RAND

Вы также можете добиться того же результата, используя СЛУЧАЙ функцияхотя это требует немного больше усилий, если вы хотите сгенерировать целые числа.

Чтобы сгенерировать случайные числа в Excel с помощью RAND:

  1. Нажмите в ячейке, где вы хотите, чтобы ваш первый номер появился.
  2. Тип =СЛУЧАЙ().
    превосходить ранд
  3. Нажимать Входить и генерируется случайное десятичное число от 0 до 1.
    excel случайный десятичный
  4. Если вы хотите преобразовать это в целое число, измените формулу на =ОКРУГЛ(СЛУЧАЙ()*100,0).
    excel формула ранда
  5. При этом будут генерироваться случайные числа от 1 до 100 путем умножения десятичной дроби на 100 и округления до ближайшего целого числа. Вы можете изменить «100» на любое желаемое значение.
    случайное целое число
  6. Чтобы создать больше случайных чисел таким же образом, нажмите и удерживайте маленький квадрат в правом нижнем углу ячейки и перетащите его вниз.
    ручка перетаскивания excel
  7. Каждый раз, когда в Excel обрабатывается новая формула, случайные числа будут пересчитываться. Чтобы сохранить один определенный набор значений, скопируйте и вставьте свою формулу в качестве значений.
    Эксель случайные целые числа

Как генерировать уникальные случайные числа в Excel

Из-за того, что и СЛУЧАЙ, и СЛУЧМЕЖДУ генерируют числа, вы можете обнаружить, что вы получаете одно и то же значение более одного раза в своем списке случайных чисел. Этого следовало ожидать; если бы числа были действительно случайными, повторяющиеся значения, скорее всего, возникнут, если вы сгенерируете достаточное количество значений.

Однако если вы хотите рандомизировать определенный набор значений, это можно сделать. Например, вы можете расположить числа от 1 до 20 в случайном порядке.

Чтобы сгенерировать уникальные случайные числа в Excel:

  1. Щелкните ячейку, в которой вы хотите сгенерировать первое случайное число.
  2. Тип =СЛУЧАЙ() и нажмите Входить.
    превосходить ранд
  3. Нажмите и удерживайте маленький квадрат в правом нижнем углу ячейки.
    ручка перетаскивания excel
  4. Перетащите вниз, чтобы создать 20 случайных значений.
    excel 20 случайных десятичных знаков
  5. В ячейке рядом с вашим первым случайным значением введите =РАНГ(B2, B$2:B$21) где «B» — это столбец, в котором вы создали свои случайные значения, «2» — это строка первого значения, а «21» — строка последнего значения.
    формула рейтинга excel
  6. Нажимать Входить и будет сгенерировано значение от 1 до 20.
  7. Нажмите и удерживайте квадрат в правом нижнем углу ячейки и перетащите его вниз, чтобы создать 20 значений.
    ручка перетаскивания excel
  8. Excel создаст серию случайных чисел от 1 до 20 в случайном порядке.результат рейтинга excel
  9. В том маловероятном случае, если вы получите повторяющееся случайное десятичное число в первой строке, введите «=» в любой пустой ячейке и нажмите Входить. Значения будут восстановлены.
Читайте также:
Программа которая делает грамоты

Используйте возможности Excel

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

Например, знаете ли вы, что вы можете подать сигнал тревоги в Excel, когда выполняются определенные критерии? Вы также можете вставлять флажки в Excel, чтобы создавать полезные контрольные списки для работы или дома. Вы также можете создавать всевозможные диаграммы, от лепестковых диаграмм до прямоугольных диаграмм.

Источник: miiledi.ru

Как получить случайное число. Random

Сегодня я расскажу вам, как научить программу «придумывать» числа в процессе работы. Где это может нам понадобиться? Генератор случайных чисел может использоваться в играх(например кости или большеменьше) или для случайного имени при создание каких либо файлов. Область применения функции Random ограничивается только вашей фантазией. Картинка для статьи, выбиралась по тому же принципу!

Итак, для того чтобы получить случайное число требуется, всего лишь пару строк кода в нашей программе: Randomize и Random(Максимальное число).

Создадим программу которая будет генерировать случайное число в определенном диапазоне по нажатию по кнопке «Получить число»

Создаем форму с 2-мя TEdit и 1-й Tbutton

1

И напишем следующий код для кнопки: «Получить число»

procedure TForm1.Button1Click(Sender: TObject); var I1,I2,I3: integer; //1, 2 переменная это диапазон наших чисел и 3 это результат. begin I1:=StrToIntDef(Edit1.Text,0); //Переводим наши значение в числовой тип данных I2:=StrToIntDef(Edit2.Text,0); //при ошибки перевода забиваем 0-ое значение if I2=0 then begin ShowMessage(‘Некорректные данные значения До!’); //Вывод ошибки. Edit2.Text:=’До’; Exit; //Выход из процедуры end; Randomize; //Устанавливает генератор случайного числа на следующее значение I3:=Random(I1-I2)+I2; //Создаем случайное число в диапазоне. ShowMessage(IntToStr(I3)); //Выводим результат end;

Простой генератор псевдослучайных чисел

lfsr, Регистр сдвига с линейной обратной связью

Давно ничего не писал в блоге Марсохода — много всякого навалилось, всякие дела, командировка, встречи..
Вот решил восполнить пробел и сделать очень простой проект. Простые проекты ведь тоже нужны, особенно тем, кто только начинает изучать ПЛИС. Это проект выходного дня. Собственно я его в воскресенье и сделал, а вот описать его — это то же работа требующая времени и внимания.

Очень простой генератор случайных чисел. Такой простой, что я его даже и не придумывал, а просто взял описание в википедии: Регистр сдвига с линейной обратной связью. В англоязычной литературе такой метод генерации псевдослучайных чисел называется linear feedback shift register, LFSR.

Берется сдвиговый регистр и по каждому такту сдвигается вправо, а новый, вычисленный бит задвигается в регистр слева. Вычисление нового бита ведется операцией исключающего ИЛИ (XOR).

Написать такое на языке описания аппаратуры Verilog HDL — очень просто:

input wire rst,
input wire clk,
input wire enable,
output wire [31:0]out,
output wire [7:0]out_lb
);

reg [31:0]shift_reg;
assign out = shift_reg;
assign out_lb = shift_reg[7:0];
wire next_bit;
assign next_bit =
shift_reg[31] ^
shift_reg[30] ^
shift_reg[29] ^
shift_reg[27] ^
shift_reg[25] ^
shift_reg[ 0];

Читайте также:
Как снять ограничения на установку программ на компьютер

Вычисление нового значения сдвигового регистра происходит в строке shift_reg ;
Следующий задвигаемый бит next_bit вычисляется выше: assign next_bit =.

Нужно обратить внимание, что регистру shift_reg обязательно требуется начальная инициализация, сброс по сигналу rst. В сдвиговый регистр нужно положить что-то отличное от нуля, иначе next_bit так и останется в нуле и они, эти нули так и будут бегать по кругу в сдвиговом регистре.

Предположим, модуль генерации псевдослучайных чисел готов. Что дальше? Я думаю пусть плата Марсоход3 с ПЛИС MAX10 генерирует случайные байты и я буду отправлять их через последовательный порт в компьютер. А на компьютере напишу программу, которая будет принимать поток байт и строить гистограмму распределения случайных чисел в интервале времени.

Значит теперь мне нужен модуль передачи в последовательный порт:

module serial(
input wire clk12,
input wire [7:0]sbyte,
input wire sbyte_rdy,
output wire tx,
output wire end_of_send,
output wire ack
);

reg [9:0]sreg;
assign tx = sreg[0];
reg [3:0]cnt = 0;
wire busy; assign busy = (cnt <11);
assign ack = sbyte_rdy

assign end_of_send = busy==1’b0 prev_busy==1’b1;

По сигналу sbyte_rdy входной байт sbyte фиксируется в сдвиговом регистре sreg. Как-то я писал про передачу в последовательный порт. При этом, в младший бит регистра записывается ноль — это будет старт-бит, а 9й и 10й биты — записываются единицы — это будут стоп биты. Далее по каждому такту данные сдвигается влево, младшими вперед.

Счетчик cnt сбрасывается в начале передачи и считает переданные биты до 11-ти. По окончании передачи выдается имульс end_of_send — конец передачи. Дальше в проекте я хочу, чтобы сигнал окончания передачи тут же брал следующий байт из генератора псевдослучайных чисел и начинал следующею передачу.

Как мне все это проверить? В принципе проект простой, можно сразу в плате пытаться смотреть как работает, например, с помощью Altera SignalTap.

Но я думаю было бы интересно, например, сделать функциональную симуляцию этих двух модулей: lfsr и serial.
Для симуляции нужен тестбенч. Это такая же программа на Verilog, но только ее цель — это исключительно отладка проекта. В тестбенче я соединю модули lfsr и serial и подам на них тактовую частоту. Вот тестбенч:

reg clk;
reg rst;

wire w_tx,w_ack;
wire [31:0]w_random;

lfsr u_lfsr(
.rst( rst ),
.clk( clk ),
.enable( w_eos ),
.out( w_random )
);

serial u_serial(
.clk12( clk ),
.sbyte( w_random[7:0] ),
.sbyte_rdy( w_eos ),
.tx( w_tx ),
.end_of_send( w_eos ),
.ack( w_ack )
);

initial
begin
$dumpfile («out.vcd»);
$dumpvars (0,tb);
rst #50 rst #100;
#10000;
$finish ;
end

Выход генератора псевдослучайных чисел u_lfsr проводами w_random подключен к модулю u_serial. Сигнал окончания передачи u_serial.end_of_send проводом w_oes передается на u_lfsr.enable для генерации следующего числа и начинает новую передачу u_serial.sbyte_rdy( w_eos ).

Для симуляции использую Icarus Verilog.
Компилирую: iverilog -o outfile tb.v serial.v lfsr.v
Симулирую: vvp outfile
В результате получаю временные диаграммы out.vcd, которые можно посмотреть программой GtkWave:

waveform icarus verilog, gtkwave

Теперь, убедившись с помощью симуляции, что все должно работать, перехожу к проекту в среде Quartus Prime.
Эта среда проектирования используется для разработки проектов для микросхем ПЛИС серии Altera MAX10.
За основу своего проекта я беру проект leds с нашего сайта и вставляю туда мои модули.
Получается вот такой топ модуль:

prj top

Для тех, кто впервые использует квартус: сделать графический компонент из текста verilog просто: из главного меню пункты File => Create / Update => Create Symbol Files for Current File. Потом получившиеся модули можно вставить в графический дизайн через правый клик мыши и Insert => Synbol.

Читайте также:
Как поставить пароль на вход в программу

В топ модуле кроме lfsr и serial еще есть модуль display — это совсем простая штука, случайные числа генерируются слишком часто. Если их просто вывести на светодиоды, то они просто будут равномерно светиться. Поэтому тут в модуле display я буду показывать только случайный байт из последовательности один раз примерно в 200 миллисекунд.

Ну и обратите внимание на вход кнопочки KEY0 — это сброс генератора.
В настройках проекта (в меню Assignments => Assignment Editor) на кнопочке KEY0 прямо в ПЛИС назначен подтягивающий резистор Weak Pull Up Resistor. Эта фишка есть только в микросхемах серии MAX II и MAX10. В Cyclone III или Cyclone IV такого нет. Если кнопочку на плате Марсоход3 не нажимать, то подтягивающий резистор делает единицу на входе KEY0. Когда кнопочка нажата — то ноль.

Выход модуля передатчика serial идет на вывод ftdi_bd1, который, в свою очередь идет на микросхему FTDI на плате Марсоход3. Она позволяет организовать связь платы Марсоход3 с компьютером через последовательный порт FTDI USB-to-COM.

Чтобы дополнительно проиллюстрировать работу генератора я встроил в систему модуль SignalTap. Он позволит смотреть в реальном времени некоторые сигналы проекта прямо из чипа ПЛИС, а именно вот эти три сигнала: serial:inst7|tx, serial:inst7|end_of_send, и serial:inst7|sbyte[7..0].

Altera SignalTap Waveforms

Ну или вот другой масштаб, чтобы увидеть «шум» случайных чисел:

Altera SignalTap Waveforms

Теперь следующая задача.
Нужно для компьютера написать программу, которая будет читать из последовательного порта и рисовать гистограмму плотности вероятности случайных чисел за какой-то промежуток времени. Я написал эту программу для Windows в среде Visual Studio 2012. Программа, как диалоговое окно MFC.

гистограмма распределения случайных чисел из генератора LFSR

Программа открывает последовательный порт (тот который в выпадающем списке в дропбоксе), программирует его на скорость передачи 12МБит/Сек — такая скорость передачи из платы и периодически выполняет чтение и порта всех имеющихся там данных. По этим принятым байтам строится гистограмма значений и рисуется на экране.

Весь проект для среды Quartus Prime и Visual Studio можно скачать вот здесь:

Простой генератор псевдослучайных чисел ( 226538 bytes )

Ну и видео демонстрация как это все работает:

В принципе, распределение похоже на равномерное. Значит мой генератор работает!

Однако, должен предупредить, что это, конечно, очень примитивный генератор.
Это написано и в Википедии, по которой я делал свой проект и в разных других источниках. Говорят, что анализируя последовательность байт из такого генератора очень легко раскрыть его структуру и, следовательно, предсказывать последующие значения. Таким образом, использовать такие генераторы в программах шифрования напрямую нельзя.

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

Пожалуй нужно еще добавить, что современные процессоры Интел (теперь — подразделение компании Альтера, ой, шучу.. наоборот) имеют встроенные аппаратные генераторы случайных последовательностей. Причем они используют для создания случайных последовательностей несколько асинхронных «источников энтропии» (Entropy Source) от теплового шума кристалла (The ES runs asynchronously on a self-timed circuit and uses thermal noise within the silicon to output a random stream of bits at the rate of 3 GHz). Такой генератор повторить или хотя бы сделать подобный в «гаражных» условиях весьма трудно. Еще труднее доказать, что созданный генератор случайных чисел имеет действительно равномерное распределение и действительно весьма случаен. Кому интересно, про генераторы случайных чисел в процессорах Интел написано вот здесь.

Источник: marsohod.org

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru