{ "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "from network.network import (is_valid_network,\n", " get_number_of_activated_antenna,\n", " can_antenna_be_turned_on,\n", " pp_network,\n", " turn_off_antenna,\n", " turn_on_antenna)\n", "from numpy import mean\n", "from random import Random\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "random = Random(666)\n", "\n", "def create_new_network(network, box_size):\n", " number_of_square = box_size * box_size\n", " for antenna in range(number_of_square):\n", " if can_antenna_be_turned_on(antenna, network, box_size) and random.choice([True, False]):\n", " network = turn_on_antenna(antenna, network)\n", " else:\n", " network = turn_off_antenna(antenna, network)\n", " return network\n", "\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [], "source": [ "box_size = 8\n", "n = 15000\n", "\n", "valid_networks = [0]\n", "\n", "for random_antenna in range(n):\n", " network = valid_networks[-1]\n", " new_network = create_new_network(network, box_size)\n", " valid_networks.append(new_network)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "hist(list(map(get_number_of_activated_antenna, valid_networks)), bins=100)\n", "None" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "15.072261849210053" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean(list(map(get_number_of_activated_antenna, valid_networks)))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "□-■-□-□-■\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" ] } ], "source": [ "for network in valid_networks[-10:]:\n", " print(pp_network(network, box_size))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "ename": "ValueError", "evalue": "Cannot take a larger sample than population when 'replace=False'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mrandom\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mchoice\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m111\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreplace\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;32mmtrand.pyx\u001b[0m in \u001b[0;36mmtrand.RandomState.choice (numpy/random/mtrand/mtrand.c:11010)\u001b[1;34m()\u001b[0m\n", "\u001b[1;31mValueError\u001b[0m: Cannot take a larger sample than population when 'replace=False'" ] } ], "source": [ "random.choice([1,2,3,4], 111, replace=False)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.4.3+" } }, "nbformat": 4, "nbformat_minor": 0 }