From 03bd14d4b0da979577c5386eb8bf3ddd355a044a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nils=20Forss=C3=A9n?= Date: Mon, 26 Sep 2022 17:13:49 +0200 Subject: [PATCH] pushing --- Ecology/pngs/gunilla.fig | Bin 49823 -> 49822 bytes TSRT04_2022_nilfo359_amafa469.txt | 113 ++++++++++++++++++++++++++++++ Yatzee/dice_sim.m | 5 +- Yatzee/hist_plot.m | 1 - Yatzee/main.asv | 30 -------- Yatzee/main.m | 23 ------ Yatzee/monte_carlo.m | 0 Yatzee/organize_dice.m | 13 ++++ Yatzee/sum_vec.m | 11 --- Yatzee/toss_til_yahtzee.m | 26 +++++++ Yatzee/yatzy.m | 56 +++++++++++++++ 11 files changed, 211 insertions(+), 67 deletions(-) create mode 100644 TSRT04_2022_nilfo359_amafa469.txt delete mode 100644 Yatzee/hist_plot.m delete mode 100644 Yatzee/main.asv delete mode 100644 Yatzee/main.m create mode 100644 Yatzee/monte_carlo.m create mode 100644 Yatzee/organize_dice.m delete mode 100644 Yatzee/sum_vec.m create mode 100644 Yatzee/toss_til_yahtzee.m create mode 100644 Yatzee/yatzy.m diff --git a/Ecology/pngs/gunilla.fig b/Ecology/pngs/gunilla.fig index ffe2494728c82dad4de87272071209d0adb762f3..c7dc2a3e7e16874a3d5675f883ab6aa4cb3dbc9a 100644 GIT binary patch delta 18792 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 delta 18824 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 PYy$+3gSdaQyIbRC^x0*h diff --git a/TSRT04_2022_nilfo359_amafa469.txt b/TSRT04_2022_nilfo359_amafa469.txt new file mode 100644 index 0000000..e71fc24 --- /dev/null +++ b/TSRT04_2022_nilfo359_amafa469.txt @@ -0,0 +1,113 @@ +function [dice_results] = dice_sim(num_of_dice) +%dice_sim Simulates ´num_of_dice´ number of rolls +% OUTPUT: ´dice_results´ 1-dimensional vector of all rolls + dice_results = randi(6, 1, num_of_dice); +end + + +function [sum_vec] = organize_dice(dice_results) +%organize_dice Organizes ´dice_results´ by their value +% OUTPUT: ´sum_vec´ 1-dimensional summary vector, dice index corresponds +% to dice value + sum_vec = zeros(1, 6); + for num=1:6 + for i=1:length(dice_results) + if dice_results(i) == num + sum_vec(num) = sum_vec(num) + 1; + end + end + end +end + + +function [count] = toss_til_yahtzee(dice_total) +%toss_til_yahtzee Performs dice rolls with ´dice_total´ number of dice until yahtzee +% OUTPUT: ´count´ number of rolls until yahtzee + count = 1; + % Initial roll + results = dice_sim(dice_total); + [main_n, main_most_common] = max(organize_dice(results)); + + while main_n < dice_total + + % Continue rolling until all dice equal + results = dice_sim(dice_total - main_n); + sigma = organize_dice(results); + [n, most_common] = max(sigma); + + % If rolled dice contain more matching values than saved dice, + % switch. + if n > main_n + main_most_common = most_common; + main_n = n; + else + main_n = main_n + sigma(main_most_common); + end + count = count + 1; + end +end + + +function [mhat, s2hat] = yatzy(experiments) +%yatzy Rolls dice until yahtzee ´experiments´ number of times, plots the data +% and calculates statistical properties of the experiment. +% OUTPUT: ´mhat´ average number of rolls til yahtzee +% OUTPUT: ´s2hat´ variance in dice rolls required for yahtzee + dice_total = 5; + results = zeros(experiments, 1); + + % Do experiment + for i=1:experiments + results(i) = toss_til_yahtzee(dice_total); + if mod(i, 1000) == 0 + % Status update + fprintf('%d%% Done\n',i/(experiments/100)); + end + end + + % Matrices for statistics calculations. + A = [ + 0 1/6 1/36 1/216 1/1296 + 0 5/6 10/36 15/216 25/1296 + 0 0 25/36 80/216 250/1296 + 0 0 0 120/216 900/1296 + 0 0 0 0 120/1296 + ]; + e_1 = [1;0;0;0;0]; + e_5 = [0;0;0;0;1]; + + % Statistics y values for plotting. Only 50 up to 50 total rolls + % plotted. + chance = zeros(50,1); + for i=1:50 + chance(i, 1) = e_1.' * A^i * e_5; + end + + % Clear figure and plot data, histogram for experiment and dashed line + % for theoretical statistics + clf; + histogram(results); + title("Number of dice toss to get yahtzee!") + ylabel("Number of attempts") + xlabel("Rolls") + hold on; + yyaxis right; + ylabel("Theoretical percentage") + plot([1:50], chance, linewidth=3, LineStyle='--'); + legend("Number of attempts", "Theoretical percentage"); + + % Statistics calculations + mean_ = mean(results); + variance = sum((results - mean(results)).^2)/(length(results) - 1); + fprintf('Mean: %d\n',mean_); + fprintf('Variance: %d\n',variance); + mhat = mean_; + s2hat = variance; +end + + + +% ------------------EXAMPLE------------------- +% Run the experiment by running the main function yatzy(experiments), all other functions should be accessible to yatzy(experiments) +% >> +[mhat, s2hat] = yatzy(10000) \ No newline at end of file diff --git a/Yatzee/dice_sim.m b/Yatzee/dice_sim.m index 65af3c6..819326e 100644 --- a/Yatzee/dice_sim.m +++ b/Yatzee/dice_sim.m @@ -1,4 +1,5 @@ function [dice_results] = dice_sim(num_of_dice) -%dice_sim Simulates ´num of dice´ many dice rolls and returns results vector -dice_results = randi(6, 1, num_of_dice); +%dice_sim Simulates ´num_of_dice´ number of rolls +% OUTPUT: ´dice_results´ 1-dimensional vector of all rolls + dice_results = randi(6, 1, num_of_dice); end \ No newline at end of file diff --git a/Yatzee/hist_plot.m b/Yatzee/hist_plot.m deleted file mode 100644 index aa9f5b0..0000000 --- a/Yatzee/hist_plot.m +++ /dev/null @@ -1 +0,0 @@ -histogram(dice_results, 6) \ No newline at end of file diff --git a/Yatzee/main.asv b/Yatzee/main.asv deleted file mode 100644 index 91b9529..0000000 --- a/Yatzee/main.asv +++ /dev/null @@ -1,30 +0,0 @@ -clear; -clc; - -% Roll x dice -count = 1; -results = dice_sim(5); -[main_n, main_most_common] = max(sum_vec(results)); -main_most_common -results -main_n -while count < 5 - results = dice_sim(5 - main_n); - % determine most common dice - - [n, most_common] = max(sum_vec(results)); - if n > main_n - main_most_common = most_common; - main_n = n; - else - if most_common - main_n = main - - end - main_most_common - results - main_n - % reroll other dice - % repeat until all dice are unified - count = count + 1; -end diff --git a/Yatzee/main.m b/Yatzee/main.m deleted file mode 100644 index bd00a1a..0000000 --- a/Yatzee/main.m +++ /dev/null @@ -1,23 +0,0 @@ -clear; -clc; -dice = 10; -% Roll x dice -count = 1; -results = dice_sim(dice); -[main_n, main_most_common] = max(sum_vec(results)); -while main_n < dice - results = dice_sim(dice - main_n); - % determine most common dice - sigma = sum_vec(results); - [n, most_common] = max(sigma); - if n > main_n - main_most_common = most_common; - main_n = n; - else - main_n = main_n + sigma(main_most_common); - end - % reroll other dice - % repeat until all dice are unified - count = count + 1; -end -count \ No newline at end of file diff --git a/Yatzee/monte_carlo.m b/Yatzee/monte_carlo.m new file mode 100644 index 0000000..e69de29 diff --git a/Yatzee/organize_dice.m b/Yatzee/organize_dice.m new file mode 100644 index 0000000..a788c9f --- /dev/null +++ b/Yatzee/organize_dice.m @@ -0,0 +1,13 @@ +function [sum_vec] = organize_dice(dice_results) +%organize_dice Organizes ´dice_results´ by their value +% OUTPUT: ´sum_vec´ 1-dimensional summary vector, dice index corresponds +% to dice value + sum_vec = zeros(1, 6); + for num=1:6 + for i=1:length(dice_results) + if dice_results(i) == num + sum_vec(num) = sum_vec(num) + 1; + end + end + end +end \ No newline at end of file diff --git a/Yatzee/sum_vec.m b/Yatzee/sum_vec.m deleted file mode 100644 index af727f5..0000000 --- a/Yatzee/sum_vec.m +++ /dev/null @@ -1,11 +0,0 @@ -function [sum_vec] = sum_vec(dice_results) -%UNTITLED5 Summary of this function goes here -% Detailed explanation goes here -sum_vec = zeros(1, 6); -for num=1:6 - for i=1:length(dice_results) - if dice_results(i) == num - sum_vec(num) = sum_vec(num) + 1; - end - end -end \ No newline at end of file diff --git a/Yatzee/toss_til_yahtzee.m b/Yatzee/toss_til_yahtzee.m new file mode 100644 index 0000000..aa0643d --- /dev/null +++ b/Yatzee/toss_til_yahtzee.m @@ -0,0 +1,26 @@ +function [count] = toss_til_yahtzee(dice_total) +%toss_til_yahtzee Performs dice rolls with ´dice_total´ number of dice until yahtzee +% OUTPUT: ´count´ number of rolls until yahtzee + count = 1; + % Initial roll + results = dice_sim(dice_total); + [main_n, main_most_common] = max(organize_dice(results)); + + while main_n < dice_total + + % Continue rolling until all dice equal + results = dice_sim(dice_total - main_n); + sigma = organize_dice(results); + [n, most_common] = max(sigma); + + % If rolled dice contain more matching values than saved dice, + % switch. + if n > main_n + main_most_common = most_common; + main_n = n; + else + main_n = main_n + sigma(main_most_common); + end + count = count + 1; + end +end \ No newline at end of file diff --git a/Yatzee/yatzy.m b/Yatzee/yatzy.m new file mode 100644 index 0000000..c2cef5c --- /dev/null +++ b/Yatzee/yatzy.m @@ -0,0 +1,56 @@ +function [mhat, s2hat] = yatzy(experiments) +%yatzy Rolls dice until yahtzee ´experiments´ number of times, plots the data +% and calculates statistical properties of the experiment. +% OUTPUT: ´mhat´ average number of rolls til yahtzee +% OUTPUT: ´s2hat´ variance in dice rolls required for yahtzee + dice_total = 5; + results = zeros(experiments, 1); + + % Do experiment + for i=1:experiments + results(i) = toss_til_yahtzee(dice_total); + if mod(i, 1000) == 0 + % Status update + fprintf('%d%% Done\n',i/(experiments/100)); + end + end + + % Matrices for statistics calculations. + A = [ + 0 1/6 1/36 1/216 1/1296 + 0 5/6 10/36 15/216 25/1296 + 0 0 25/36 80/216 250/1296 + 0 0 0 120/216 900/1296 + 0 0 0 0 120/1296 + ]; + e_1 = [1;0;0;0;0]; + e_5 = [0;0;0;0;1]; + + % Statistics y values for plotting. Only 50 up to 50 total rolls + % plotted. + chance = zeros(50,1); + for i=1:50 + chance(i, 1) = e_1.' * A^i * e_5; + end + + % Clear figure and plot data, histogram for experiment and dashed line + % for theoretical statistics + clf; + histogram(results); + title("Number of dice toss to get yahtzee!") + ylabel("Number of attempts") + xlabel("Rolls") + hold on; + yyaxis right; + ylabel("Theoretical percentage") + plot([1:50], chance, linewidth=3, LineStyle='--'); + legend("Number of attempts", "Theoretical percentage"); + + % Statistics calculations + mean_ = mean(results); + variance = sum((results - mean(results)).^2)/(length(results) - 1); + fprintf('Mean: %d\n',mean_); + fprintf('Variance: %d\n',variance); + mhat = mean_; + s2hat = variance; +end \ No newline at end of file -- 2.30.2