Реализовать гистограмму из результатов вычислений - C (СИ)
Формулировка задачи:
Здравствуйте господа! Возникла проблема в реализации задачи. Не пойму как собрать гистограмму из результатов вычислений. код работает (сюда прилагается) что необходимо сделать? читал некоторые варианты но не получилось.
предполагалось использовать массив для его заполнения и вывода. подскажите как и что тут будет правильнее сделать
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <math.h>
- #include <time.h>
- double getrand(double l)
- {
- return -log(1-(double)(rand())/RAND_MAX)/l;
- }
- int main()
- {
- printf("Enter N:");//размер
- int i, N;
- scanf("%d", &N);
- printf("Enter l");//параметр распр
- double lambda;
- scanf("%lf", &lambda);
- srand ( time(NULL) );
- for(i = 0; i < N; i++)
- printf("%lf ", getrand(lambda));
- getch();
- return 0;
- }
Решение задачи: «Реализовать гистограмму из результатов вычислений»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <time.h>
- double getrand( double l);
- int main ( void )
- {
- int i, j, n;
- double lambda, k;
- puts( "Enter n:" ); //размер
- scanf("%d", &n);
- puts("Enter l"); //параметр распр
- scanf( "%lf", &lambda );
- srand ( time(NULL));
- for( i = 1; i < n; i++ ) {
- puts("");
- printf( "%lf ", k = getrand( lambda ) );
- for( j = 0; j < (int)k; j++ )
- if ( k >= 1 )
- putchar('*');
- }
- puts("");
- getchar();
- return 0;
- }
- double getrand (double l)
- {
- return -log(1-(double)(rand())/RAND_MAX)/l;
- }
Объяснение кода листинга программы
В этом коде происходит следующее:
- В функции
main
пользователю предлагается ввести размер выборкиn
и параметр распределенияlambda
. - Затем происходит инициализация генератора случайных чисел с помощью функции
srand(time(NULL))
. - В цикле
for
сi
от 1 доn-1
выводится на экран строка, представляющая собой гистограмму. - Для каждого элемента гистограммы вызывается функция
getrand(lambda)
, которая возвращает случайное число, экспоненциально распределенное с параметромlambda
. - Это случайное число выводится на экран с помощью
printf(
%lf, k)
. - Если случайное число больше или равно 1, то в соответствующую строку гистограммы добавляется символ
*
с помощьюputchar('*');
. - В конце программы пользователю предлагается нажать любую клавишу для выхода из программы.
- Функция
getrand
использует встроенную функциюrand()
для генерации случайного числа и функциюlog()
для вычисления натурального логарифма. - Функция
getrand
возвращает результат вычисления-log(1-(double)(rand())/RAND_MAX)/l
, который является случайным числом, экспоненциально распределенным с параметромlambda
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д