Случайные числа. Основы программирования (на языке Си)

Содержание

Слайд 2

Случайные числа Случайные явления: везде… бросание монеты («орел» или «решка») падение

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

Случайные явления: везде…
бросание монеты («орел» или «решка»)
падение снега
броуновское движение
помехи при

телефонной связи
шум радиоэфира
Случайные числа – это такая последовательность чисел, для которой невозможно предсказать следующее даже зная все предыдущие.
Проблема: как получить на компьютере?
Возможные решения:
использовать внешний источник шумовых помех
с помощью математических преобразований
Слайд 3

Псевдослучайные числа Псевдослучайные числа – это такая последовательность чисел, которая обладает

Псевдослучайные числа

Псевдослучайные числа – это такая последовательность чисел, которая обладает свойствами

случайных чисел, но каждое следующее число вычисляется по заданной формуле.
Примеры:
Случайные целые числа [0,m) (линейный конгруэнтный метод)
Случайные вещественные числа [0,1]
Литература:
Д. Кнут, Искусство программирования для ЭВМ, т.2.

дробная часть числа

a, c, m - целые числа

простое число

230-1

например, k = 5

остаток от деления

Слайд 4

Распределение случайных чисел Модель: снежинки падают на отрезок [a,b] распределение равномерное неравномерное

Распределение случайных чисел

Модель: снежинки падают на отрезок [a,b]

распределение

равномерное

неравномерное

Слайд 5

Распределение случайных чисел Особенности: распределение – это характеристика всей последовательности, а

Распределение случайных чисел

Особенности:
распределение – это характеристика всей последовательности, а не

одного числа
равномерное распределение одно, компьютерные датчики (псевдо)случайных чисел дают равномерное распределение
неравномерных – много
любое неравномерное можно получить с помощью равномерного

a

b

a

b

Слайд 6

Генератор случайных чисел Генератор на отрезке [0,RAND_MAX]: int X, Y; X

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

Генератор на отрезке [0,RAND_MAX]:

int X, Y;
X = rand();

// псевдослучайное число
Y = rand() // это уже другое число!

англ. random – случайный

Целые числа на отрезке [a,b]:

int X, Y;
X = a + rand() % (b - a + 1);
Y = a + rand() % (b - a + 1);

#include

rand() % (b - a + 1);

[0,b-a]

Слайд 7

Генератор случайных чисел Вещественные числа на отрезке [a,b]: float X, Y;

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

Вещественные числа на отрезке [a,b]:

float X, Y;
X =

a + (b-a)*rand() / RAND_MAX;
Y = a +(b-a)*rand() / RAND_MAX;

#include

(b-a)*rand() / RAND_MAX;

[0,b-a]

Слайд 8

Примеры Записать в переменную X случайное целое число в диапазоне: 1)

Примеры

Записать в переменную X случайное целое число в диапазоне:

1) XЄ[1,10]

2) XЄ[-10,10]

3)

XЄ[-100,0]

Записать в переменную Y случайное целое число в диапазоне:

1) YЄ [0,12.5]

2) YЄ [-1,1]

3) YЄ [-3.1415,0]

Ответ: X = 1 + rand() % (10);

Ответ: X = -10 + rand() % (21);

Ответ: X = -100 + rand() % (101);

Ответ: Y = 12.5*rand()/RAND_MAX

Ответ: Y = -1+2*rand() /RAND_MAX

Ответ: Y = 3.1415*rand()/ RAND_MAX - - 3.1415

Слайд 9

Задачи «A»: Получить и вывести три случайных целых числа в диапазоне

Задачи

«A»: Получить и вывести три случайных целых числа в диапазоне от

1 до 10, найти их сумму, произведение и среднее арифметическое.
Пример:
Случайные числа:
5 7 8
5+7+8=20
5*7*8=280
5+7+8)/3=6.667
Слайд 10

Задачи «B»: Получить и вывести случайные координаты двух точек (A и

Задачи

«B»: Получить и вывести случайные координаты двух точек (A и B)

на плоскости (вещественные числа в диапазоне от -10 до 10). Вычислить длину отрезка AB.
Пример:
Координаты точки A:
5.5 3.5
Координаты точки B:
1.5 2
Длина отрезка AB = 4.272

«C»: Получить случайное трехзначное число и вывести через запятую его отдельные цифры.
Пример:
Получено число 123.
Его цифры 1, 2, 3.

Слайд 11

Тема 6. Ветвления Основы программирования (на языке Си)

Тема 6. Ветвления

Основы программирования (на языке Си)

Слайд 12

Условный оператор Задача: изменить порядок действий в зависимости от выполнения некоторого

Условный оператор

Задача: изменить порядок действий в зависимости от выполнения некоторого условия.

полная

форма ветвления

if ( a > b )
M = a;
else
M = b;

Слайд 13

Условный оператор: неполная форма неполная форма ветвления M = a; if

Условный оператор: неполная форма

неполная форма ветвления

M = a;
if ( b

> a )
M = b;
Слайд 14

Условный оператор if ( a > b ) { с =

Условный оператор

if ( a > b )
{
с =

a;
a = b;
b = c;
}

4

6

?

4

6

4

a

b

3

2

1

c

Слайд 15

Знаки отношений > >= == != больше, меньше больше или равно

Знаки отношений

>

<

>=

<=

==

!=

больше, меньше

больше или равно

меньше или равно

равно

не равно

Слайд 16

Вложенные условные операторы if ( a > b ) printf("Андрей старше");

Вложенные условные операторы

if ( a > b )
printf("Андрей старше");
else

if

( a == b )
printf("Одного возраста");
else
printf("Борис старше");

вложенный условный оператор

Задача: в переменных a и b записаны возрасты Андрея и Бориса. Кто из них старше?

Слайд 17

Задачи «A»: Ввести три целых числа, найти максимальное из них. Пример:

Задачи

«A»: Ввести три целых числа, найти максимальное из них.
Пример:
Введите три

целых числа:
1 5 4
Максимальное число 5

«B»: Ввести пять целых чисел, найти максимальное из них.
Пример:
Введите пять целых чисел:
1 5 4 3 2
Максимальное число 5

Слайд 18

Задачи «C»: Ввести последовательно возраст Сергея, Бориса и Виктора. Определить, кто

Задачи

«C»: Ввести последовательно возраст Сергея, Бориса и Виктора. Определить, кто из

них старше.
Пример:
Возраст Сергея: 15
Возраст Бориса: 17
Возраст Виктора: 16
Ответ: Борис старше всех.
Пример:
Возраст Сергея: 17
Возраст Бориса: 17
Возраст Виктора: 16
Ответ: Сергей и Борис старше Виктора.
Слайд 19

Сложные условия Задача: набор сотрудников в возрасте 25-40 лет (включительно). if

Сложные условия

Задача: набор сотрудников в возрасте 25-40 лет (включительно).

if ( )


printf("подходит");
else
printf("не подходит");

&&

||

!

Приоритет :
отношения (<, >, <=, >=, ==, !=)
! («НЕ»)
&& («И»)
|| («ИЛИ»)

v >= 25 && v <= 40

сложное условие

«И»

«ИЛИ»

«НЕ»

Слайд 20

Задачи «A»: Напишите программу, которая получает три числа и выводит количество

Задачи

«A»: Напишите программу, которая получает три числа и выводит количество одинаковых

чисел в этой цепочке.
Пример:
Введите три числа:
5 5 5
Все числа одинаковые.
Пример:
Введите три числа:
5 7 5
Два числа одинаковые.
Пример:
Введите три числа:
5 7 8
Нет одинаковых чисел.
Слайд 21

Задачи «B»: Напишите программу, которая получает номер месяца и выводит соответствующее

Задачи

«B»: Напишите программу, которая получает номер месяца и выводит соответствующее ему

время года или сообщение об ошибке.
Пример:
Введите номер месяца:
5
Весна.
Пример:
Введите номер месяца:
15
Неверный номер месяца.
Слайд 22

Задачи «C»: Напишите программу, которая получает возраст человека (целое число, не

Задачи

«C»: Напишите программу, которая получает возраст человека (целое число, не превышающее

120) и выводит этот возраст со словом «год», «года» или «лет». Например, «21 год», «22 года», «25 лет».
Пример:
Введите возраст: 18
Вам 18 лет.
Пример:
Введите возраст: 21
Вам 21 год.
Пример:
Введите возраст: 22
Вам 22 года.
Слайд 23

Множественный выбор if (m == 1) printf("январь"); if (m == 2)

Множественный выбор

if (m == 1) printf("январь");
if (m == 2) printf("февраль");
...
if (m

== 12) printf("декабрь");

switch ( m ) {
case 1: printf("январь");
break;
case 2: printf("февраль");
break;
...
case 12: printf("декабрь");
break;
default: printf("ошибка");
}

Слайд 24

Множественный выбор switch ( m ) { case 1: printf("январь"); case

Множественный выбор

switch ( m ) {
case 1: printf("январь");
case

2: printf("февраль");
case 3: printf("март");
default: printf("ошибка");
}

Если не ставить break:

февральмартошибка

При m = 2: