четвер, 11 січня 2018 р.

Алгоритми з випадковими числами

Задачі з випадковими числами

Приклад 1

Одержати випадковим чином одне число (від 1 до 4), що моделює масть гральних карт. Результат вивести у вигляді слів: „піка”, якщо випало 1, „треф”, якщо випало 2, „бубна”, якщо випало 3, „чирва”, якщо випало 4.

Змінні:

Вхідних даних немає

Вихідні:
  • x - число, що має значення 1, 2, 3, 4 (цілий тип)

Алгоритм

  1. Спочатку потрібно викликати процедуру randomize.
  2. Потрібно створити ціле число, що належить інтервалу [1, 4]. Для цього будемо використовувати формулу X:=Random(B-A+1)+A, де A=1,B=4.
  3. Перевіримо створене число.
    • Якщо воно дорівнює 1, то надрукуємо слово 'піка'.
    • Якщо воно дорівнює 2, то надрукуємо слово 'треф'.
    • Якщо воно дорівнює 3, то надрукуємо слово 'бубна'.
    • Якщо воно дорівнює 4, то надрукуємо слово 'чирва'.

Програма

 var x:byte;
begin
 randomize;x:=random(4)+1;
 if x=1 then writeln('пики');
 if x=2 then writeln('трефи');
 if x=3 then writeln('бубни');
 if x=4 then writeln('черви');
end.

Приклад 2

Одержати у програмі 10 випадкових цілих чисел у діапазоні від 0 до 10 включно та знайти їх суму.

Змінні:

Вхідних даних немає.

Вихідні:
  • x – число, що має значення від 0 до 10 (ціле число)
  • s – сума всіх чисел x
Проміжні:
  • i – параметр циклу (ціле число)

Алгоритм

  1. Спочатку потрібно викликати процедуру randomize.
  2. Встановимо початкове значення суми s:=0.
  3. Потрібно створити десять цілих чисел, тому створення та інші дії будемо виконувати у операторних дужках у циклі for i:=1 to 10 do:
    • Числа повинні належати інтервалу [0, 10]. Тому для цього будемо використовувати формулу X:=Random(B), де B=11.
    • Отримане число виводиться на екран оператором write(x,' ').
    • Отримане число накопичується у суму оператором s:=s+x.
  4. Коли цикл закінчиться, тобто будуть створені всі 10 чисел, виводиться на екран значення суми.

Програма

 var x,s,i:integer;
begin
 randomize; s:=0;
 for i:=1 to 10 do
 begin
    x:=random(11);
    write(x,' ');
    s:=s+x;
 end;
 writeln(s);
end.

Результат роботи програми

ВивідПояснення
19 4 10 9 8 2 0 3 7 2 54Перші 10 чисел створені генератором випадкових чисел,
останнє число – їх сума.
27 9 0 8 5 8 3 8 10 4 62

Приклад 3

Одержати у програмі 20 випадкових дійсних чисел у діапазоні від A до B та знайти кількість тих, що >2. Числа A та B ввести з клавіатури.

Змінні:

Вхідні:
  • А, В – значення кордонів діапазону [А, В], з якого будемо одержувати випадкові числа (дійсні числа)
Вихідні:
  • x – число, що має значення від А до В (дійсне число)
  • – кількість чисел, що >2 (ціле число)
Проміжні:
  • i – параметр циклу (ціле число)

Алгоритм

  1. Спочатку потрібно ввести значення А та В оператором read(a, b).
  2. Потім потрібно викликати процедуру randomize.
  3. Встановимо початкове значення кількості k:=0.
  4. Потрібно створити двадцять дійсних чисел, тому створення та інші дії будемо виконувати у операторних дужках у циклі for i:=1 to 20 do:
    • Числа дійсні та повинні належати інтервалу [А, В). Тому для цього будемо використовувати формулу X:=A+Random*(B-A).
    • Отримане число виводиться на екран оператором write(x:1:2,' ').
    • Отримане число перевіряється та, якщо воно >2 збільшується лічильник k:=k+1.
  5. Коли цикл закінчиться, тобто будуть створені всі 20 чисел, виводиться на екран значення лічильника.

Програма

 var k,i:integer; x,a,b:real;
begin
 read(a,b);randomize; k:=0;
 for i:=1 to 20 do
 begin
    x:=a+random*(b-a);
    write(x:1:2,' ');
    if x>2 then k:=k+1;
    writeln(k);
 end;
end.

Результат роботи програми

ВвідВивідПояснення
-3 3-0.93 2.86 -0.29 -1.52
2.05 1.40  -2.30 1.04
2.03 2.03  -2.31 -1.16
1.77 -1.12 2.42 -2.86
1.43 -0.48 -2.17 0.25
5
Перші два числа (3 та -3) введені з клавіатури. Це значення А та В. Потім 20 чисел створені генератором випадкових чисел, останнє число – кількість тих, що >2.

Приклад 4

Одержати у програмі k випадкових цілих чисел у діапазоні від A до B включно та вивести на екран тільки ті з них, що закінчуються цифрою 7. Числа A(5<=A<=20 )B(25<=B<=50) та  k(10<=k<=20) одержати випадковим чином.

Змінні:

Вхідних даних немає

Вихідні:
  • А, В – значення кордонів діапазону [А, В], з якого будемо одержувати випадкові числа (цілі числа)
  • x – випадкове число, що має значення від А до В (ціле число)
  • k – кількість випадкових чисел (ціле число)
Проміжні:
  • i – параметр циклу (ціле число)

Алгоритм

  1. Спочатку потрібно викликати процедуру randomize.
  2. Потім випадковим чином отримати значення a, b, k. Виведемо на екран створені значення.
  3. Потім потрібно створити k цілих чисел, тому створення та інші дії будемо виконувати у операторних дужках у циклі for i:=1 to k do:
    • Числа цілі та повинні належати інтервалу [А, В). Тому для цього будемо використовувати формулу x:=a+random(b-a+1).
    • Отримане число перевіряється: якщо воно закінчується цифрою 7, то виводиться на екран оператором       write(x,' '), якщо ні, то не виводиться.

Програма

 var x,k,i,a,b:integer;
begin
 randomize;
 a:=random(16)+5; b:=random(26)+25;
 k:=random(11)+10;
 Writeln('a=',a,' b=',b,' k=',k);
 for i:=1 to k do
 begin
    x:=a+random(b-a+1);
    if x mod 10=7 then write(x,' ');
 end;
end.

Результат роботи програми

ВивідПояснення
1a=10 b=32 k=18
27 27 27 17 
Створюється 18 чисел з інтервалу [10, 32]. З них тільки чотири закінчуються на цифру 7 (27 27 27 17).
2a=5 b=40 k=14 Створюється 14 чисел з інтервалу [5, 40]. З них жодне не закінчується на цифру 7
3a=16 b=26 k=17
17 
Створюється 17 чисел з інтервалу [16, 26]. З них тільки одне закінчуються на цифру 7 (17).

Варіанти задач

  1. Одержати випадковим чином одне ціле число (від 1 до 6), що моделює кидання іграшкового кубика.
  2. Одержати випадковим чином одне дійсне число (від 8 до 18).
  3. Одержати випадковим чином одне число (0 чи 1), що моделює кидання монети (0-решка, 1-орел). Вивести результат, у вигляді: „орел” (якщо випало 1) та „решка” (якщо випало 0).
  4. Одержати випадковим чином два числа (від 0 до 6) , що моделює кість доміно. Вивести результат, наприклад, у вигляді: „Вибрано кість 4–0”.
  5. Одержати випадковим чином два числа (від 1 до 6), що моделюють кидання іграшкових кубиків двома гравцями. Вивести результат та з’ясувати, хто з гравців набрав більше балів.
  6. Одержати випадковим чином одне число, що моделює вартість гральної карти. Результат вивести у вигляді числа (для 6, 7, 8, 9, 10) або слова (для „валет”, „дама”, „король”, „туз”).
  7. Одержати у програмі 10 випадкових дійсних чисел у діапазоні від 0 до 1 та знайти їх суму.
  8. Одержати у програмі 15 випадкових цілих чисел у діапазоні від –5 до 5 включно та знайти кількість парних.
  9. Одержати у програмі 15 випадкових дійсних чисел у діапазоні від –6 до 6 та знайти кількість від’ємних.
  10. Одержати у програмі 20 випадкових цілих чисел у діапазоні від 0 до A включно та знайти суму кратних 5. Число A ввести з клавіатури.
  11. Одержати випадковим чином чотири числа (від 0 до 6) , що моделює дві кості доміно. Вивести результат, наприклад, у вигляді: „Вибрано кості 4–0 та 5–4”. З’ясувати, чи можна приставити одну кість до другої згідно з правилами гри у доміно. У нашому прикладі, це можна, бо 4=4.
  12. Одержати у програмі k випадкових цілих чисел у діапазоні від 0 до A включно та знайти кількість тих, що закінчуються цифрою 3. Числа A та k ввести з клавіатури.
  13. Одержати у програмі k випадкових дійсних чисел у діапазоні від 0 до A та вивести на екран тільки ті, що <2. Числа A та k ввести з клавіатури.
  14. Одержати у програмі k випадкових цілих чисел у діапазоні від 0 до A включно та знайти суму тих, що > A div 2. Числа A (10<=A<=30 ) та k (15<=k<=20) одержати випадковим чином.
  15. Одержати у програмі k випадкових дійсних чисел у діапазоні від A до B та вивести на екран тільки ті, що >C. Числа A (10<=A<=20 ), B(25<=A<=40 ), C (15<=C<=30) та k (10<=k<=15) одержати випадковим чином.
  16. Одержати випадковим чином два числа, що моделюють вартість (6, 7, 8, 9, 10, „валет”, „дама”, „король”, „туз”) та масть („піка”, „треф”, „бубна”, „чирва”) гральної карти. Результат вивести, наприклад, у вигляді : „Вибрано карту 6 трефи” або ”Вибрано карту король піки”.
  17. Скласти програму, що перевіряє знання таблиці множення. В ній випадковим чином одержати два числа  (від 0 до 9), після чого на екран виводиться питання у вигляді: „Чому дорівнює добуток 4 на 9?”. Після вводу відповіді повинно видаватись повідомлення, чи відповідь вірна.
  18. Скласти програму, що перевіряє знання таблиці множення. В ній випадковим чином одержати два числа (від 0 до  9), після чого на екран виводиться питання у вигляді: „Чому дорівнює добуток 4 на 9?”. Після вводу відповіді повинно видаватись повідомлення, чи відповідь вірна. Питання виводити 12 раз та підраховувати кількість вірних та невірних відповідей. В кінці поставити оцінку.

Немає коментарів:

Дописати коментар