Реализовать гистограмму из результатов вычислений - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д