{ "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "┌ Info: Recompiling stale cache file /Users/john/.julia/compiled/v1.2/Plots/ld3vC.ji for Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80]\n", "└ @ Base loading.jl:1240\n" ] } ], "source": [ "using Plots\n", "gr()\n", "default(leg=false)\n", "\n", "using Distributions" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.00\n", "\n", "\n", "0.25\n", "\n", "\n", "0.50\n", "\n", "\n", "0.75\n", "\n", "\n", "1.00\n", "\n", "\n", "0\n", "\n", "\n", "250\n", "\n", "\n", "500\n", "\n", "\n", "750\n", "\n", "\n", "1000\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "5000 0.9151200569433682 2734" ] } ], "source": [ "V = 1113 # Number of vikings\n", "R = 1123 # Number of rings\n", "\n", "# Winner's f\n", "w = Float64[]\n", "\n", "# Deaths per run\n", "d = Int[]\n", "\n", "default(show=:inline)\n", "for j in 1:5000\n", " \n", "# Assign rings evenly to each viking\n", "r = zeros(Int, V)\n", "for i in 1:R\n", " r[i%V+1] += 1\n", "end\n", "\n", "# Assign each viking a fighting skill between 0 and 1\n", "f = 1.0.-rand(Beta(), V)\n", "\n", "deaths = 0\n", "for i in 1:12000\n", " k = rand(1:V)\n", " l = rand(1:V)\n", "\n", " # Viking k challenges viking l according to collective encoding (number of rings)\n", " if k!=l && (r[k]!=0 || r[l]!=0) && rand() < r[k] / r[k] + r[l]\n", " #if f[k] > 0.5\n", " deaths += 1\n", " # Win/lose according to actual individual skill, f\n", " if rand() < f[k] / (f[k] + f[l])\n", " r[k] = r[k] + r[l]\n", " r[l] = 0\n", " #f[l] = rand()\n", " else\n", " r[l] = r[k] + r[l]\n", " r[k] = 0\n", " #f[k] = rand()\n", " end\n", " end\n", " \n", " m,_ = findmax(r)\n", " if m == R\n", " break\n", " end\n", " # Viking with most rings dies and spreads his rings to others\n", " #for n in 1:m\n", " # r[rand(1:V)] += 1\n", " #end\n", " #r[m] = 0\n", " #f[m] = rand()\n", "\n", "end\n", "\n", "_,m = findmax(r)\n", "push!(w, f[m])\n", "push!(d, deaths)\n", "histogram(w, bins=0:0.1:1)\n", "print(j, \" \", f[m], \" \", deaths)\n", "\n", "end\n" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.00\n", "\n", "\n", "0.25\n", "\n", "\n", "0.50\n", "\n", "\n", "0.75\n", "\n", "\n", "1.00\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "1.5\n", "\n", "\n", "2.0\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "default(show=:nothing)\n", "plot(histogram(w, normed=true))\n", "plot!(p1, 0:0.1:1, 0:0.2:2, lw=4)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Normal{Float64}(μ=2746.5226, σ=50.829580848556915)" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dist = fit(Normal, d)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "2600\n", "\n", "\n", "2700\n", "\n", "\n", "2800\n", "\n", "\n", "2900\n", "\n", "\n", "0.000\n", "\n", "\n", "0.002\n", "\n", "\n", "0.004\n", "\n", "\n", "0.006\n", "\n", "\n", "0.008\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(histogram(d, normed=true))\n", "plot!(2600:2:2900, pdf.(dist, 2600:2:2900), lw=4)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Julia 1.2.0", "language": "julia", "name": "julia-1.2" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.2.0" } }, "nbformat": 4, "nbformat_minor": 2 }