From dccdc512d5147abd732385aa8287c02ec1021e09 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Fri, 29 Nov 2019 13:43:41 +0100 Subject: [PATCH] Apply black formatter and isort; add usage to README --- README.rst | 14 +++++++++++++- javarandom.py | 15 ++++++++------- setup.py | 20 +++++++++----------- tests.py | 6 +++--- 4 files changed, 33 insertions(+), 22 deletions(-) diff --git a/README.rst b/README.rst index 61927ca..e5ded01 100644 --- a/README.rst +++ b/README.rst @@ -10,7 +10,19 @@ implementation for Python. Installation ============ -A standard setup.py is provided. +.. code-block:: bash + + $ pip install java-random + +Usage +===== + +.. code-block:: python + + >>> import javarandom + >>> r = javarandom.Random(0) + >>> r.nextDouble() + 0.730967787376657 FAQ ==== diff --git a/javarandom.py b/javarandom.py index 1600ea5..b8a4027 100644 --- a/javarandom.py +++ b/javarandom.py @@ -1,5 +1,6 @@ -import time import math +import time + class Random(object): """ @@ -16,7 +17,7 @@ class Random(object): synchronize all accesses to this class per-instance. """ - def __init__(self, seed = None): + def __init__(self, seed=None): """ Create a new random number generator. """ @@ -40,7 +41,7 @@ def seed(self): @seed.setter def seed(self, seed): - self._seed = (seed ^ 0x5deece66d) & ((1 << 48) - 1) + self._seed = (seed ^ 0x5DEECE66D) & ((1 << 48) - 1) def next(self, bits): """ @@ -56,13 +57,13 @@ def next(self, bits): elif bits > 32: bits = 32 - self._seed = (self._seed * 0x5deece66d + 0xb) & ((1 << 48) - 1) + self._seed = (self._seed * 0x5DEECE66D + 0xB) & ((1 << 48) - 1) retval = self._seed >> (48 - bits) # Python and Java don't really agree on how ints work. This converts # the unsigned generated int into a signed int if necessary. if retval & (1 << 31): - retval -= (1 << 32) + retval -= 1 << 32 return retval @@ -74,14 +75,14 @@ def nextBytes(self, l): for i in range(0, len(l)): if not i % 4: n = self.nextInt() - b = n & 0xff + b = n & 0xFF # Flip signs. Ugh. if b & 0x80: b -= 0x100 l[i] = b n >>= 8 - def nextInt(self, n = None): + def nextInt(self, n=None): """ Return a random int in [0, `n`). diff --git a/setup.py b/setup.py index 96c03fb..d8009b0 100755 --- a/setup.py +++ b/setup.py @@ -3,14 +3,12 @@ from distutils.core import setup setup( - name="java-random", - version="1.0", - description="Implementation of Java's Random", - long_description=open("README.rst").read(), - author="Corbin Simpson", - author_email="MostAwesomeDude@gmail.com", - url="http://github.com/MostAwesomeDude/java-random", - py_modules=[ - "javarandom", - ], - ) + name="java-random", + version="1.0", + description="Implementation of Java's Random", + long_description=open("README.rst").read(), + author="Corbin Simpson", + author_email="MostAwesomeDude@gmail.com", + url="http://github.com/MostAwesomeDude/java-random", + py_modules=["javarandom"], +) diff --git a/tests.py b/tests.py index d0f58c5..c51c8fb 100755 --- a/tests.py +++ b/tests.py @@ -4,8 +4,8 @@ import javarandom -class AccuracyTest(unittest.TestCase): +class AccuracyTest(unittest.TestCase): def setUp(self): self.r = javarandom.Random(0) @@ -44,8 +44,8 @@ def test_nextDouble(self): def test_nextGaussian(self): standard = 0.80253306373903050, -0.90154608841751220 - self.assertEqual((self.r.nextGaussian(), self.r.nextGaussian()), - standard) + self.assertEqual((self.r.nextGaussian(), self.r.nextGaussian()), standard) + if __name__ == "__main__": unittest.main()