Mercurial > p > roundup > code
annotate roundup/anypy/random_.py @ 7471:a4987f5ebee0
Add padding around code examples.
They were all squished against the edges of the box. This makes them
less squished and prevents overlap of bottom scroll bar with the bottom
row of text.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Thu, 08 Jun 2023 01:33:16 -0400 |
| parents | 07ce4e4110f5 |
| children | f002747b6773 |
| rev | line source |
|---|---|
|
5488
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
1 try: |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
2 from secrets import choice, randbelow, token_bytes |
|
6029
adf54478cdaf
flake8 cleanup: whitspeace format changes.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
3 |
|
adf54478cdaf
flake8 cleanup: whitspeace format changes.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
4 def seed(v=None): |
|
5488
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
5 pass |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
6 |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
7 is_weak = False |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
8 except ImportError: |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
9 import os as _os |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
10 import random as _random |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
11 |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
12 # prefer to use SystemRandom if it is available |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
13 if hasattr(_random, 'SystemRandom'): |
|
6029
adf54478cdaf
flake8 cleanup: whitspeace format changes.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
14 def seed(v=None): |
|
5488
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
15 pass |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
16 |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
17 _r = _random.SystemRandom() |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
18 is_weak = False |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
19 else: |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
20 # don't completely throw away the existing state, but add some |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
21 # more random state to the existing state |
|
6029
adf54478cdaf
flake8 cleanup: whitspeace format changes.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
22 def seed(v=None): |
|
7228
07ce4e4110f5
flake8 fixes: whitespace, remove unused imports
John Rouillard <rouilj@ieee.org>
parents:
6029
diff
changeset
|
23 import os |
|
07ce4e4110f5
flake8 fixes: whitespace, remove unused imports
John Rouillard <rouilj@ieee.org>
parents:
6029
diff
changeset
|
24 import time |
|
5488
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
25 _r.seed((_r.getstate(), |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
26 v, |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
27 hasattr(os, 'getpid') and os.getpid(), |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
28 time.time())) |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
29 |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
30 # create our own instance so we don't mess with the global |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
31 # random number generator |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
32 _r = _random.Random() |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
33 seed() |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
34 is_weak = True |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
35 |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
36 choice = _r.choice |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
37 |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
38 def randbelow(i): |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
39 return _r.randint(0, i - 1) |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
40 |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
41 if hasattr(_os, 'urandom'): |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
42 def token_bytes(l): |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
43 return _os.urandom(l) |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
44 else: |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
45 def token_bytes(l): |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
46 _bchr = chr if str == bytes else lambda x: bytes((x,)) |
|
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
47 return b''.join([_bchr(_r.getrandbits(8)) for i in range(l)]) |
