Написать генератор псевдослучайных чисел, равномерно распределенных на интервале [0, 0.5] - C (СИ)
Формулировка задачи:
Написать генератор псевдослучайных чисел, равномерно распределенных на интервале [0., 0.5] (использовать rand()). Подсчитать частоты попадания в каждый из интервалов длиной 0.1 при выборке 500000
Решение задачи: «Написать генератор псевдослучайных чисел, равномерно распределенных на интервале [0, 0.5]»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define LEN 80
#define frand() ((float)(rand())/(RAND_MAX))
int main()
{
srand(time(NULL));
int a[5]={0,0,0,0,0};
for(int i=0;i<50000;++i)
{
float s = frand()*0.5;
if(s<0.1)
a[0]+=1;
else if(s<0.2)
a[1]+=1;
else if(s<0.3)
a[2]+=1;
else if(s<0.4)
a[3]+=1;
else if(s<=0.5)
a[4]+=1;
//В принципе можно и так, но нужно отлавливать 0.5
//и границы у интервалов будут суммироваться не туда
//int t = s/0.1;
//a[t]+=1;
}
int summ=0;
for(int i=0;i<5;++i)
{
summ+=a[i];
printf("%d \n",a[i]);
}
printf("S = %d",summ);
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы со случайными числами, временной меткой и математическими функциями.
- Определение массива для хранения количества попаданий в каждый интервал.
- Инициализация генератора случайных чисел с помощью функции srand(time(NULL)).
- Создание цикла, который будет выполняться 50000 раз.
- Внутри цикла определяется случайное число s в интервале [0,0.5] с помощью функции frand().
- Затем проверяется значение s и к соответствующему интервалу прибавляется единица.
- После выполнения всех 50000 итераций, вычисляется сумма всех элементов массива a.
- Выводится значение суммы на экран.