|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.01.2016, 15:05 | #1 |
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
|
С#, расчет плотности вероятности функции
Есть функция y(n). Просто реализация чисел, например double[] y = new double{1.1, 3.2, 2.5, 20, 30, 25}. Нужно получить такую функцию, чтобы в заданных мною интервалах вычислялось количество попадания того или иного значения y в данный интервал. Например, задаем 3 интервала: [0-10),[10-20), [20-35). Нужно, чтобы посчиталось количество попаданий величин y в каждый из этих интервалов. Я должен, в итоге, получить 2 массива. В первом - начала интервалов, то есть 0, 10 и 20. Во втором - число попаданий. Для моих данных это 3, 0, 3.
Я могу решить это for+if, но не думаю, что нет решений попроще. Поэтому просьба подкинуть идей, как это проще и быстрее сделать. Это всего лишь часть кода, она должна быть оптимально написана и как можно проще. Либо может знает кто, как построить y(n) с помощью гистограммы? Чтобы самому ничего не надо было считать? |
28.01.2016, 18:40 | #2 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
Если бы интервалы были равные по длине, то можно было бы использовать целочисленное деление y на длину интервала.
|
29.01.2016, 08:00 | #3 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,331
|
Так думаю, что замечание от type_Oleg верное.
Вместе с тем, при построении гистограммы следует выбирать равные интервалы. В противном случае распределение будет искажено. Для ясности сказанного: равномерное распределение, при выборе неравных интервалов, станет "окрашенным". Я, например, задаюсь количеством интервалов (размер массива). Целочисленное деление значения на величину интервала определяет номер элемента массива, который следует инкрементировать. На следующем шаге можно нормировать полученные значения либо на число точек в максимуме, если такой предполагается, либо на общее число измерений. PS: Пример. 1. Находим min, max. 2. d=[(max-min)/N] - целая часть: размер интервала. 3. M = [(Ai - min)/d] - номер интервала 4. S[M] = S[M] + 1 Если интервалы неравномерные (ну вот так надо), то длины интервалов помещаем в массив. Заводим переменную, которая будет выполнять роль индекса, пусть это Index. Организуем цикл по нашим данным, внутри которого в цикле repete - until или do - while для C#, последовательно вычитаем интервалы из исходного числа до тех пор, пока не получим результат меньше нуля. При этом незабываем инкрементировать Index. Как-то так, ...
Как-то так, ...
Последний раз редактировалось ViktorR; 29.01.2016 в 09:22. |
29.01.2016, 18:09 | #4 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
Не, в принципе можно и неравные интервалы. Ведь на гистограмме откладывают не просто количество или частоты попаданий , а количество или частоты , деленные на длину интервала.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Расчет вероятности лотерейной игры | coNsept | Общие вопросы C/C++ | 0 | 22.01.2014 00:24 |
Промежуток рисунка. Расчет функции | Silverstone | Общие вопросы Delphi | 0 | 16.12.2012 21:13 |
На воду опущен шар радиуса r, изготовленный из вещества плотности r | Verushka | Помощь студентам | 2 | 20.04.2012 01:45 |
расчет комплексной функции ошибка | ovosch1992 | Общие вопросы Delphi | 1 | 26.12.2011 11:55 |
Сапер: расчет вероятности нахождения мины | Explode | Помощь студентам | 0 | 04.10.2010 00:33 |