Scilab - Нахождение среднего числа случайно сгенерированных чисел с разными индексами - PullRequest
1 голос
/ 06 ноября 2019

Скажем, у меня есть функция, которая генерирует случайные целые числа между скажем (1,10).

Затем я определяю (для цикла), который имеет 5 итераций.

Это (для цикла) вызывает функцию, определенную выше, а затем проверяет значение целого числа, сгенерированного функцией. В зависимости от значения целого числа определяется переменная «стоимость».

function integer = UniformInt(a, b)
    integer =  min( floor( rand()*(b-a) ) + a , b);
endfunction

for i=1:5

    x(i) = UniformInt(1,10);

    if (x(i)<90) then
        cost(i) = 15;

        elseif (90<=x(i) && x(i)<=110) then
        cost(i) = 27;

        else
        cost(i) = 35;

    end

end

Теперь, когда я запускаю это и нахожу x, произнесем сгенерированные значения:

   5.
   9.
   5.
   2.
   2.

Итак, различные значения cost будут:

   27.
   35.
   27.
   15.
   15.

Пока все это хорошо. Теперь, что я хочу сделать с этими результатами:

  • Проверьте, сколько раз появлялось каждое значение x. Я могу сделать это с помощью функции tabul Scilab:

  • 1.
  • 2.
  • 2.
  • Теперь я действительно хочу закодировать:

x=9 появился только один раз, поэтому среднее значение cost равно 35/1 = 35.

x=5 появилось дважды, поэтому среднее значение cost(27+27)/2 = 27.

x=2 появилось дважды, поэтому среднее значение cost составляет (15+15)/2 = 15.

Как бы я это сделал?

1 Ответ

1 голос
/ 06 ноября 2019

Я бы так и сделал, но ответ довольно тривиален, поскольку на данный момент значение стоимости одинаково для данного значения x (я полагаю, ваше реальное приложение использует случайные значения стоимости)

t = tabul(x);
for k = 1:size(t,1)
  avg(k) = mean(cost(x == t(k)));
end
...