[MPEI] Aula01, Aula02
Signed-off-by: Tiago Garcia <tiago.rgarcia@ua.pt>
This commit is contained in:
parent
066454b1e3
commit
31843bdcd5
Binary file not shown.
|
@ -0,0 +1,21 @@
|
|||
% Matriz 3x10000 em que cada coluna representa uma experiência com os 3
|
||||
% resultados (cada valor está entre 0..1)
|
||||
experiencias = rand(3,10000);
|
||||
% Matriz 3x10000 com valores 1 ou 0 dependente se for maior que 0.5
|
||||
lancamentos = experiencias > 0.5;
|
||||
% Vetor 1x10000 com a soma de cada linha (número de resultados obtidos)
|
||||
resultados = sum(lancamentos,1);
|
||||
% Vetor 1x10000 com 1 se o resultado for 2 (o pretendido)
|
||||
sucessos = resultados == 2;
|
||||
% Determina a % de valores 1
|
||||
P = sum(sucessos) / 10000
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
N = 1e5; % Número de experiências
|
||||
p = 0.5; % prob de cara
|
||||
k = 2; % número de caras
|
||||
n = 3; % número de lançamentos
|
||||
lancamentos = rand(n,N) > p;
|
||||
sucessos = sum(lancamentos) == k;
|
||||
P = sum(sucessos) / N
|
|
@ -0,0 +1,7 @@
|
|||
N = 1e5; % Número de experiências
|
||||
p = 0.5; % prob de cara
|
||||
k = 6; % número de caras
|
||||
n = 15; % número de lançamentos
|
||||
lancamentos = rand(n,N) > p;
|
||||
sucessos = sum(lancamentos) == k;
|
||||
P = sum(sucessos) / N
|
|
@ -0,0 +1,7 @@
|
|||
N = 1e5; % Número de experiências
|
||||
p = 0.5; % prob de cara
|
||||
k = 6; % número de caras
|
||||
n = 15; % número de lançamentos
|
||||
lancamentos = rand(n,N) > p;
|
||||
sucessos = sum(lancamentos) >= k;
|
||||
P = sum(sucessos) / N
|
|
@ -0,0 +1,22 @@
|
|||
function P = ProbCara(nLan, nCara, nExp)
|
||||
lancamentos = rand(nLan, nExp) > 0.5;
|
||||
sucessos = sum(lancamentos) == nCara;
|
||||
P = sum(sucessos) / nExp;
|
||||
end
|
||||
|
||||
function Calc(n, color)
|
||||
span = 1:n;
|
||||
graph = zeros(n, 1);
|
||||
|
||||
for i = 1 : length(span)
|
||||
graph(i) = ProbCara(n, i, 1e5);
|
||||
end
|
||||
|
||||
stem(span, graph, color)
|
||||
end
|
||||
|
||||
hold on
|
||||
Calc(20, 'red')
|
||||
Calc(40, 'blue')
|
||||
Calc(100, 'green')
|
||||
hold off
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,5 @@
|
|||
function P = CalculateProbEqual(partial, total, experiences)
|
||||
results = rand(total, experiences) > 0.5;
|
||||
successes = sum(results) == partial;
|
||||
P = sum(successes) / experiences;
|
||||
end
|
|
@ -0,0 +1,5 @@
|
|||
function P = CalculateProbMaxEq(partial, total, experiences)
|
||||
results = rand(total, experiences) > 0.5;
|
||||
successes = sum(results) <= partial;
|
||||
P = sum(successes) / experiences;
|
||||
end
|
|
@ -0,0 +1,5 @@
|
|||
function P = CalculateProbMinEq(partial, total, experiences)
|
||||
results = rand(total, experiences) > 0.5;
|
||||
successes = sum(results) >= partial;
|
||||
P = sum(successes) / experiences;
|
||||
end
|
|
@ -0,0 +1,6 @@
|
|||
function P = CalculateProbMinMaxEq(min, max, total, experiences)
|
||||
results = rand(total, experiences) > 0.5;
|
||||
successes = sum(results) >= min;
|
||||
successes = successes <= max;
|
||||
P = sum(successes) / experiences;
|
||||
end
|
|
@ -0,0 +1,9 @@
|
|||
a = CalculateProbMinEq(1,2,1e5);
|
||||
d = CalculateProbMinEq(2,2,1e5);
|
||||
e = CalculateProbEqual(1,4,1e5);
|
||||
f = CalculateProbMinMaxEq(1,2,4,1e5);
|
||||
|
||||
fprintf("a) %.3f\n", a)
|
||||
fprintf("d) %.3f\n", d)
|
||||
fprintf("e) %.3f\n", e)
|
||||
fprintf("f) %.3f\n", f)
|
|
@ -0,0 +1,12 @@
|
|||
N = 1e5; % Numero de experiencias
|
||||
|
||||
dardos = randi(100,20,N); % Gerar uma matriz 20xN com cada elemento pertencente [1,100]
|
||||
res = zeros(1, N); % Criar uma matriz linha de 0
|
||||
|
||||
for i = 1:N
|
||||
% unique -> retorna 1 se o campo de dardos selecionado apenas for '1'
|
||||
res(i) = length(unique(dardos(:,i))) == 20; % Verificar para coluna
|
||||
end
|
||||
|
||||
probSimul = sum(res) / N; % Calcular a probabilidade
|
||||
fprintf("Prob. Simulação: %.4f\n", probSimul);
|
|
@ -0,0 +1,12 @@
|
|||
N = 1e5; % Numero de experiencias
|
||||
|
||||
dardos = randi(100,20,N); % Gerar uma matriz 20xN com cada elemento pertencente [1,100]
|
||||
res = zeros(1, N); % Criar uma matriz linha de 0
|
||||
|
||||
for i = 1:N
|
||||
% unique -> retorna 1 se o campo de dardos selecionado apenas for '1'
|
||||
res(i) = not(length(unique(dardos(:,i))) == 20); % Verificar para coluna
|
||||
end
|
||||
|
||||
probSimul = sum(res) / N; % Calcular a probabilidade
|
||||
fprintf("Prob. Simulação: %.4f\n", probSimul);
|
|
@ -0,0 +1,45 @@
|
|||
N = 1e5; % Numero de experiencias
|
||||
dArr = 10:10:100;
|
||||
|
||||
|
||||
prob_array = zeros(length(dArr), 1);
|
||||
for d = 1:length(dArr)
|
||||
dardos = randi(1000,dArr(d),N);
|
||||
res = zeros(1,N);
|
||||
|
||||
for i = 1:N
|
||||
res(i) = not(length(unique(dardos(:,i))) == dArr(d));
|
||||
end
|
||||
|
||||
prob = sum(res) / N;
|
||||
|
||||
prob_array(d) = prob;
|
||||
end
|
||||
|
||||
subplot(2,1,1);
|
||||
plot(dArr, prob_array, "-o");
|
||||
title('m = 1000');
|
||||
xlabel('Numero de dardos');
|
||||
ylabel("Probabilidade");
|
||||
grid on
|
||||
|
||||
prob_array = zeros(length(dArr), 1);
|
||||
for d = 1:length(dArr)
|
||||
dardos = randi(100000,dArr(d),N);
|
||||
res = zeros(1,N);
|
||||
|
||||
for i = 1:N
|
||||
res(i) = not(length(unique(dardos(:,i))) == dArr(d));
|
||||
end
|
||||
|
||||
prob = sum(res) / N;
|
||||
|
||||
prob_array(d) = prob;
|
||||
end
|
||||
|
||||
subplot(2,1,2);
|
||||
plot(dArr, prob_array, "-o");
|
||||
title('m = 100000');
|
||||
xlabel('Numero de dardos');
|
||||
ylabel("Probabilidade");
|
||||
grid on
|
|
@ -0,0 +1,24 @@
|
|||
N = 1e5; % Numero de experiencias
|
||||
m = [200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000];
|
||||
|
||||
prob_array = zeros(1, length(m));
|
||||
for i = 1:length(m)
|
||||
m_value = m(i);
|
||||
dardos = randi(m_value,100,N);
|
||||
res = zeros(1,N);
|
||||
|
||||
for j = 1:N
|
||||
res(j) = not(length(unique(dardos(:,j))) == 100);
|
||||
end
|
||||
|
||||
prob = sum(res) / N;
|
||||
|
||||
prob_array(i) = prob;
|
||||
end
|
||||
|
||||
figure;
|
||||
plot(m, prob_array, "-o");
|
||||
title('Muitos graficos');
|
||||
xlabel('Numero de alvos');
|
||||
ylabel("Probabilidade");
|
||||
grid on
|
|
@ -0,0 +1,26 @@
|
|||
N = 500;
|
||||
T = 1000;
|
||||
n_keys = 10;
|
||||
prob_array = zeros(1,n_keys);
|
||||
|
||||
for n = 1:n_keys
|
||||
prob = 0;
|
||||
for i = 1:N
|
||||
hash_exp = randi([0,T-1],n,T);
|
||||
colisions = 0;
|
||||
for j = 1:T
|
||||
if n > length(unique(hash_exp(:,j)))
|
||||
colisions = colisions + 1;
|
||||
end
|
||||
end
|
||||
prob = prob + colisions / T;
|
||||
end
|
||||
prob_array(n) = prob / N;
|
||||
end
|
||||
|
||||
fprintf("a) = %.4f\n", prob_array(10));
|
||||
|
||||
plot(1:n_keys, prob_array, "-o")
|
||||
title("Ex3 b)");
|
||||
xlabel("Numero de keys");
|
||||
ylabel("Prob. de colisao");
|
|
@ -0,0 +1,25 @@
|
|||
N = 50;
|
||||
T = 100:100:1000;
|
||||
n_keys = 50;
|
||||
prob_array = zeros(1,length(T));
|
||||
|
||||
for i = 1:length(T)
|
||||
t = T(i);
|
||||
prob = 0;
|
||||
for n = 1:N
|
||||
hash_exp = randi([1,t-1],n_keys,t);
|
||||
colisions = 0;
|
||||
for j = 1:t
|
||||
if n_keys > length(unique(hash_exp(:,j)))
|
||||
colisions = colisions + 1;
|
||||
end
|
||||
end
|
||||
prob = prob + colisions / t;
|
||||
end
|
||||
prob_array(i) = prob / N;
|
||||
end
|
||||
|
||||
plot(T, prob_array, "-o")
|
||||
title("Ex3 c)");
|
||||
xlabel("Tamanho do array");
|
||||
ylabel("Prob. de colisao");
|
|
@ -0,0 +1,17 @@
|
|||
function n = Calc(p)
|
||||
N = 1e5;
|
||||
for pessoas = 2 : 366
|
||||
a = randi(365, pessoas, N);
|
||||
for i = 1:N
|
||||
res(i) = length(unique(a(:, i))) < pessoas;
|
||||
end
|
||||
prob = sum(res)/N;
|
||||
if (prob > p)
|
||||
n = pessoas;
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
fprintf("a) = %.4f\n", Calc(0.5))
|
||||
fprintf("b) = %.4f\n", Calc(0.9))
|
|
@ -0,0 +1,46 @@
|
|||
N = 1e5;
|
||||
p_paridade = 0.5;
|
||||
lancamentos = 2;
|
||||
num_faces = 6;
|
||||
p_serX = 1/6;
|
||||
|
||||
rolls = randi(num_faces, lancamentos, N);
|
||||
|
||||
soma9 = 0;
|
||||
soma = sum(rolls);
|
||||
for i = 1 : N
|
||||
if soma(i) == 9
|
||||
soma9 = soma9 + 1;
|
||||
end
|
||||
end
|
||||
p_a = soma9/N;
|
||||
|
||||
soma_par = 0;
|
||||
roll2 = rolls(2 : N+1);
|
||||
for i = 1 : N
|
||||
if mod(roll2(i), 2) == 0
|
||||
soma_par = soma_par + 1;
|
||||
end
|
||||
end
|
||||
p_b = soma_par/N;
|
||||
|
||||
ser5 = 0;
|
||||
for i = 1 : N
|
||||
if rolls(1, i) == 5 || rolls(2, i) == 5
|
||||
ser5 = ser5 + 1;
|
||||
end
|
||||
end
|
||||
p_c = ser5/N;
|
||||
|
||||
diff1 = 0;
|
||||
for i = 1 : N
|
||||
if rolls(1, i) ~= 1 && rolls(2, i) ~= 1
|
||||
diff1 = diff1 + 1;
|
||||
end
|
||||
end
|
||||
p_d = diff1/N;
|
||||
|
||||
fprintf("P(A) = %.4f\n", p_a)
|
||||
fprintf("P(B) = %.4f\n", p_b)
|
||||
fprintf("P(C) = %.4f\n", p_c)
|
||||
fprintf("P(D) = %.4f\n", p_d)
|
Loading…
Reference in New Issue