ДЗ от 15.12.23
Стандартные функции
Случайные числа
Случайные числа на компьютере
Линейный конгруэнтный генератор
Генератор случайных (целых) чисел
Генератор случайных (веществ.) чисел
Обнуление времени (сида)
Задачи
Задачи
665.00K
Category: programmingprogramming

Генератор случайных чисел. Алгоритмизация и программирование, язык C++, 10 класс

1. ДЗ от 15.12.23

Алгоритмизация и программирование, язык C++, 10 класс
1
ДЗ от 15.12.23
1) Отобразить на экран 3 случайных числа
из диапазона. Границы диапазона [a,b]
пользователь вводит с клавиатуры.
2) Зарплата менеджера в месяц:100$ + 5%
от каждой продажи. Пользователь вводит с
клавиатуры общую сумму сделок
менеджера за месяц. Посчитать итоговую
зарплату менеджера.
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

2. Стандартные функции

Алгоритмизация и программирование, язык C++, 10 класс
Стандартные функции
#include <сmath>
2
подключить
математическую
библиотеку
abs(x) — модуль целого числа
fabs(x) — модуль вещественного числа
sqrt(x) — квадратный корень
sin(x) — синус угла, заданного в радианах
cos(x) — косинус угла, заданного в радианах
exp(x) — экспонента ех
ln(x)
— натуральный логарифм
pow(x,y) — xy: возведение числа x в степень y
floor(x) — округление «вниз»
ceil(x) — округление «вверх»
float x;
x = floor(1.6);// 1
x = ceil(1.6); // 2
К.Ю. Поляков, Е.А. Ерёмин, 2013
x = floor(-1.6);//-2
x = ceil(-1.6); //-1
http://kpolyakov.spb.ru

3. Случайные числа

Алгоритмизация и программирование, язык C++, 10 класс
3
Случайные числа
Случайно…
• встретить друга на улице
• разбить тарелку
• найти 10 рублей
• выиграть в лотерею
Случайный выбор:
• жеребьевка на
соревнованиях
• выигравшие номера
в лотерее
Как получить случайность?
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

4. Случайные числа на компьютере

Алгоритмизация и программирование, язык C++, 10 класс
4
Случайные числа на компьютере
Электронный генератор
• нужно специальное устройство
• нельзя воспроизвести результаты
Псевдослучайные числа – обладают свойствами
случайных чисел, но каждое следующее число
вычисляется по заданной формуле.
Метод середины квадрата (Дж. фон Нейман)
зерно
564321
318458191041
458191
в квадрате • малый период
(последовательность
повторяется через 106 чисел)
209938992481
938992
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

5. Линейный конгруэнтный генератор

Алгоритмизация и программирование, язык C++, 10 класс
5
Линейный конгруэнтный генератор
X = (a*X+b) % c | интервал от 0 до c-1
X = (X+3) % 10 | интервал от 0 до 9
X = 0 3 6 9 2 5 8
зерно
8 1 4 7 0
зацикливание
! Важен правильный выбор параметров
a, b и с!
Компилятор GCC:
a = 1103515245
b = 12345
c = 231
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

6. Генератор случайных (целых) чисел

Алгоритмизация и программирование, язык C++, 10 класс
6
Генератор случайных (целых) чисел
#include <сstdlib>
Генератор на отрезке [0,RAND_MAX]:
int X, Y;
X = rand(); // псевдослучайное число
Y = rand() // это уже другое число!
англ. random – случайный
Целые числа на отрезке [a,b]:
int X, a = 0, b = 10;
X = a + rand() % (b - a + 1);
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

7. Генератор случайных (веществ.) чисел

Алгоритмизация и программирование, язык C++, 10 класс
7
Генератор случайных (веществ.) чисел
#include <сstdlib>
Вещественные числа на отрезке [a,b]:
double X, a = 2.12; b = 36.563;
X = a + (double)rand() / RAND_MAX * (b - a);
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

8. Обнуление времени (сида)

Алгоритмизация и программирование, язык C++, 10 класс
8
Обнуление времени (сида)
#include <time.h>
Обнуление времени происходит только один раз!
srand(time(0));
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

9. Задачи

Алгоритмизация и программирование, язык C++, 10 класс
9
Задачи
«A»: Ввести с клавиатуры три целых числа, найти их сумму,
произведение и среднее арифметическое.
Пример:
Введите три целых числа:
5 7 8
5+7+8=20
5*7*8=280
(5+7+8)/3=6.667
«B»: Ввести с клавиатуры координаты двух точек (A и B) на
плоскости (вещественные числа). Вычислить длину
отрезка AB.
Пример:
Введите координаты точки A:
5.5 3.5
Введите координаты точки B:
1.5 2
Длина отрезка AB = 4.272
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

10. Задачи

Алгоритмизация и программирование, язык C++, 10 класс
10
Задачи
«C»: Получить случайное трехзначное число и вывести
через запятую его отдельные цифры.
Пример:
Получено число 123.
Его цифры 1, 2, 3.
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
English     Русский Rules