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

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

Задачи по программированию с решением для школьников
Want create site? Find Free WordPress Themes and plugins.


Задача — Вероятность четных случайных чисел
— программирование на Pascal, Си, Кумир, Basic-256, Python

Проверить корректность работы генератора псевдослучайных чисел языка программирования с помощью оценки вероятности выпадения четных чисел на выборке не меньше 1000 случайных чисел.

Встроенный в язык программирования генератор псевдослучайных чисел должен генерировать разные числа в заданном диапазоне с равной вероятностью. Это значит, что, например, количество четных и нечетных чисел должно быть примерно одинаковым (при условии, что диапазон задан так, что в нем количество четных и нечетных одинаково). Чем больше выборка, тем точнее результат исследования.

  1. Создадим счетчик четных случайных чисел и присвоим ему значение 0.
  2. Сгенерируем 1000 случайных чисел (например, от 0 до 99) и проверим каждое из них на четность. Четным является то число, при делении которого на 2 остаток равен 0. Если очередное число четное, то будем увеличивать счетчик на 1.
  3. Вероятность выпадения четных чисел оценим в процентах. Для этого количество четных чисел разделим на общее количество сгенерированных (в данном случае 1000) и умножим на 100.

Программа должна выдать около 50%. Можно увеличить число генераций, например до 10 тысяч. В таком случае отклонение от 50% будет меньше.

Pascal const N = 1000;
var i,q: integer;
begin
    randomize;
    q := 0;
    for i:=1 to N do
        if random(100) mod 2 = 0 then
            q := q + 1;
    writeln(q / N * 100:4:2,’%’);
end. 48.80% Язык Си #include <stdio.h>
#define N 1000
main() {
    int i,q;
    q = 0;
    srand(time(NULL));
    for (i=0; i<N; i++)
        if (rand()%100 % 2 == 0)
            q += 1;
    printf("%.2f%%n", (float)q/N * 100);
} 51.10% Python from random import random
N = 1000
q = 0
for i in range(N):
    if int(random()*100) % 2 == 0:
        q += 1
print("%.2f%%" % (q / N * 100)) 49.90% КуМир алг
нач
  цел N = 1000
  цел i,q
  q := 0
  нц для i от 1 до N
    если mod(irnd(100),2) = 0 то
      q := q + 1
    все
  кц
  вывод q / N * 100, "%"
кон 50.5%

Функция irnd() генерирует целое число от 1 до указанного в скобках включительно.

Basic-256 N = 1000
q = 0
for i=0 to N
        if int(rand*100) % 2 = 0 then
                q = q + 1
        endif
next i
print (q/N * 100) + "%" 48.3%

Did you find apk for android? You can find new Free Android Games and apps.

Добавить комментарий