{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## ランダムウォークの数理\n", "\n", "二つ（+1,-1）の状態をとるランダムウォークは二項分布 $_{10} C _r (\\frac{1}{2})^r (\\frac{1}{2})^{10-r} = _{10} C _r (\\frac{1}{2})^{10}$ に従う\n", "\n", "# 参考文献\n", "[1] 「なるほど確率論　　　著者：村上雅人」 \n", "[2] 「ランダム・ウォーク　乱れに潜む不思議な現象　　　著者：津野義道」" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "times = 10\n", "state = 0\n", "ran_num = 0.0\n", "for i = 1:times\n", " ran_num = rand()\n", " if ran_num >= 0.0 && ran_num <= 0.5\n", " state += 1\n", " elseif ran_num > 0.5 && ran_num<= 1.0\n", " state -= 1\n", " end\n", " print(\"$state ,\")\n", "end" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "state" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "約20%の確率で6の状態にいる．" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.205078125" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# ２項分布の計算\n", "((factorial(10)/(factorial(10-6)))/factorial(6)) * (1/2)^(6) * (1/2)^4" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "using PyPlot\n", "using Plots" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "binomial_dist (generic function with 1 method)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "function binomial_dist(n)\n", " state = 0\n", " global X = []\n", " for i = 0:n\n", " ran_num = rand()\n", " if ran_num >= 0.0 && ran_num <= 0.5\n", " state += 1\n", " elseif ran_num > 0.5 && ran_num<= 1.0\n", " state -= 1\n", " end\n", " #print(\"$state ,\")\n", " # 組み合わせの計算をしているところ\n", " var = (1 * i)+(-1 * (n - i))\n", " #print(\"var: $var , \\n\")\n", " # mpmathとかのインポートエラーになるのでダメ\n", " # p = ((factorial(big(n)))/(factorial(big(n-abs(var))))/factorial(big(abs(var)))) * (1/2)^(abs(var)) * (1/2)^(n-abs(var))\n", " p = binomial(n,abs(var)) * (1/2)^(abs(var)) * (1/2)^(n-abs(var))\n", " #p = ((factorial(n)/(factorial(n-abs(var))))/factorial(abs(var))) * (1/2)^(abs(var)) * (1/2)^(n-abs(var))\n", " #print(\"p:$p \\n\")\n", " push!(X,p)\n", " end\n", " end" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "binomial_dist(15)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "きちんと二項分布になっている.　 \n", "このシミュレーションでは二項分布 $_{15} C _r (\\frac{1}{2})^r (\\frac{1}{2})^{15-r} = _{15} C _r (\\frac{1}{2})^{15}$ に従う" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "histogram(X)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 例えば-10の状態と+10の状態では15C10と15C10で同じ確率になるので二つの凸が発生する．" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "PyPlot.Figure(PyObject )" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "1-element Array{PyCall.PyObject,1}:\n", " PyObject " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "PyPlot.plot(X)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ims = [] = Any[]\n", " 0.000512 seconds (1.57 k allocations: 59.375 KiB)\n" ] } ], "source": [ "@show ims = []\n", "@time for i = 1:50\n", " binomial_dist(i)\n", " push!(ims,X)\n", "end" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ims = Any[] = Any[]\n", " 0.000624 seconds (1.57 k allocations: 59.375 KiB)\n" ] } ], "source": [ "@show ims = Any[]\n", "@time for i = 1:50\n", " binomial_dist(i)\n", " push!(ims,X)\n", "end" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "binomial_repitition (generic function with 1 method)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "function binomial_repitition()\n", " @show ims = Any[]\n", " @time for i = 1:50\n", " binomial_dist(i)\n", " push!(ims,X)\n", " end\n", "end" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0.000009 seconds (16 allocations: 1.031 KiB)\n" ] }, { "data": { "text/plain": [ "binomial_repitition (generic function with 1 method)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# functionで囲ったほうが早くなる．\n", "@time binomial_repitition" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1から５０までの二項分布をプロットする．" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0.744225 seconds (136.02 k allocations: 7.230 MiB)\n", " 11.131688 seconds (91.69 k allocations: 4.609 MiB)\n" ] }, { "data": { "text/html": [ "