2018-11-10 18:19:00 +01:00
<?xml version="1.0" encoding="utf-8"?>
2024-02-28 14:38:55 +01:00
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?> <rss version= "2.0" xmlns:dc= "http://purl.org/dc/elements/1.1/" xmlns:atom= "http://www.w3.org/2005/Atom" > <channel > <title > Caught in the Net (Posts about mersenne twister)</title> <link > francescomecca.eu</link> <description > </description> <atom:link href= "francescomecca.eu/categories/mersenne-twister.xml" rel= "self" type= "application/rss+xml" > </atom:link> <language > en</language> <copyright > Contents © 2024 < a href="mailto:francescomecca.eu"> Francesco Mecca< /a> </copyright> <lastBuildDate > Wed, 28 Feb 2024 09:29:26 GMT</lastBuildDate> <generator > Nikola (getnikola.com)</generator> <docs > http://blogs.law.harvard.edu/tech/rss</docs> <item > <title > The Buridan's donkey in python</title> <link > francescomecca.eu/blog/2016/4/2/buridan_donkey/</link> <dc:creator > Francesco Mecca</dc:creator> <description > < p> During the final weeks of my exam session I started reading a bit about python 3 using an excellent book: < a href="http://www.diveintopython.net/"> Dive into Python< /a> .
2018-11-10 18:19:00 +01:00
When I noted that python uses the < a href="https://en.wikipedia.org/wiki/Mersenne_Twister"> Mersenne Twister PRNG< /a> as well I decided to write another version of my < a href="http://francescomecca.eu/index.php/archives/207"> Buridan's donkey program< /a> .< /p>
< p> .. code:: python< /p>
2024-02-28 14:38:55 +01:00
< div class="code"> < pre class="code literal-block"> < span class="kn"> import< /span> < span class="nn"> random< /span> < span class="o"> ,< /span> < span class="nn"> sys< /span>
< span class="k"> if< /span> < span class="vm"> __name__< /span> < span class="o"> ==< /span> < span class="s1"> '__main__'< /span> < span class="p"> :< /span>
< span class="n"> args< /span> < span class="o"> =< /span> < span class="nb"> list< /span> < span class="p"> ()< /span>
< span class="k"> if< /span> < span class="ow"> not< /span> < span class="n"> sys< /span> < span class="o"> .< /span> < span class="n"> stdin< /span> < span class="o"> .< /span> < span class="n"> isatty< /span> < span class="p"> ():< /span>
< span class="k"> for< /span> < span class="n"> line< /span> < span class="ow"> in< /span> < span class="n"> sys< /span> < span class="o"> .< /span> < span class="n"> stdin< /span> < span class="p"> :< /span>
< span class="k"> if< /span> < span class="n"> line< /span> < span class="p"> [< /span> < span class="o"> -< /span> < span class="mi"> 1< /span> < span class="p"> ]< /span> < span class="ow"> is< /span> < span class="s1"> '< /span> < span class="se"> \n< /span> < span class="s1"> '< /span> < span class="p"> :< /span>
< span class="n"> line< /span> < span class="o"> =< /span> < span class="n"> line< /span> < span class="p"> [:< /span> < span class="o"> -< /span> < span class="mi"> 1< /span> < span class="p"> ]< /span>
< span class="n"> args< /span> < span class="o"> .< /span> < span class="n"> append< /span> < span class="p"> (< /span> < span class="n"> line< /span> < span class="p"> )< /span>
< span class="k"> else< /span> < span class="p"> :< /span>
< span class="n"> args< /span> < span class="o"> =< /span> < span class="n"> sys< /span> < span class="o"> .< /span> < span class="n"> argv< /span> < span class="p"> [< /span> < span class="mi"> 1< /span> < span class="p"> :]< /span>
< span class="n"> argRange< /span> < span class="o"> =< /span> < span class="nb"> len< /span> < span class="p"> (< /span> < span class="n"> args< /span> < span class="p"> )< /span>
< span class="k"> for< /span> < span class="n"> i< /span> < span class="ow"> in< /span> < span class="nb"> range< /span> < span class="p"> (< /span> < span class="n"> argRange< /span> < span class="p"> ):< /span>
< span class="nb"> print< /span> < span class="p"> (< /span> < span class="nb"> str< /span> < span class="p"> (< /span> < span class="n"> i< /span> < span class="o"> +< /span> < span class="mi"> 1< /span> < span class="p"> )< /span> < span class="o"> +< /span> < span class="s1"> '.'< /span> < span class="p"> ,< /span> < span class="n"> args< /span> < span class="o"> .< /span> < span class="n"> pop< /span> < span class="p"> (< /span> < span class="n"> random< /span> < span class="o"> .< /span> < span class="n"> randrange< /span> < span class="p"> (< /span> < span class="mi"> 0< /span> < span class="p"> ,< /span> < span class="nb"> len< /span> < span class="p"> (< /span> < span class="n"> args< /span> < span class="p"> ))))< /span>
< /pre> < /div>
2018-11-10 18:19:00 +01:00
< p> This script works in a different way than the one in c++.
Rather than shuffling a list made by the entries in the arguments, it pops randomly one entry from the list till the list is empty.< /p>
< p> Not satisfied enough, I wrote also a telegram bot using the < a href="https://github.com/eternnoir/pyTelegramBotAPI"> telebot library< /a> that works as the script above but inside the telegram app.
The bot can be added to your contact list by simply searching for < a href="http://telegram.me/duridan_donkey_bot"> @duridan_donkey_bot< /a> (yes, a typo!)< /p>
< p> All the code is opensource and can be found on my github page.< /p>
2023-08-30 18:10:14 +02:00
< p> Francesco Mecca< /p> </description> <category > buridan donkey</category> <category > mersenne twister</category> <category > PesceWanda</category> <category > python</category> <category > random</category> <guid > francescomecca.eu/blog/2016/4/2/buridan_donkey/</guid> <pubDate > Sat, 02 Apr 2016 00:00:00 GMT</pubDate> </item> </channel> </rss>