Вероятность четных случайных чисел

ЗАДАЧА

Проверить корректность работы генератора псевдослучайных чисел языка программирования с помощью оценки вероятности выпадения четных чисел на выборке не меньше 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
#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%

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
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
#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%