golden hour
/opt/alt/python27/lib64/python2.7
⬆️ Go Up
Upload
File/Folder
Size
Actions
BaseHTTPServer.py
22.21 KB
Del
OK
BaseHTTPServer.pyc
21.47 KB
Del
OK
BaseHTTPServer.pyo
21.47 KB
Del
OK
Bastion.py
5.61 KB
Del
OK
Bastion.pyc
6.69 KB
Del
OK
Bastion.pyo
6.69 KB
Del
OK
CGIHTTPServer.py
12.78 KB
Del
OK
CGIHTTPServer.pyc
10.92 KB
Del
OK
CGIHTTPServer.pyo
10.92 KB
Del
OK
ConfigParser.py
27.1 KB
Del
OK
ConfigParser.pyc
25.37 KB
Del
OK
ConfigParser.pyo
25.37 KB
Del
OK
Cookie.py
25.92 KB
Del
OK
Cookie.pyc
22.61 KB
Del
OK
Cookie.pyo
22.61 KB
Del
OK
DocXMLRPCServer.py
10.52 KB
Del
OK
DocXMLRPCServer.pyc
10.2 KB
Del
OK
DocXMLRPCServer.pyo
10.09 KB
Del
OK
HTMLParser.py
16.77 KB
Del
OK
HTMLParser.pyc
13.81 KB
Del
OK
HTMLParser.pyo
13.51 KB
Del
OK
MimeWriter.py
6.33 KB
Del
OK
MimeWriter.pyc
7.31 KB
Del
OK
MimeWriter.pyo
7.31 KB
Del
OK
Queue.py
8.38 KB
Del
OK
Queue.pyc
9.56 KB
Del
OK
Queue.pyo
9.56 KB
Del
OK
SimpleHTTPServer.py
7.81 KB
Del
OK
SimpleHTTPServer.pyc
7.96 KB
Del
OK
SimpleHTTPServer.pyo
7.96 KB
Del
OK
SimpleXMLRPCServer.py
25.21 KB
Del
OK
SimpleXMLRPCServer.pyc
22.78 KB
Del
OK
SimpleXMLRPCServer.pyo
22.78 KB
Del
OK
SocketServer.py
23.39 KB
Del
OK
SocketServer.pyc
24.25 KB
Del
OK
SocketServer.pyo
24.25 KB
Del
OK
StringIO.py
10.41 KB
Del
OK
StringIO.pyc
11.45 KB
Del
OK
StringIO.pyo
11.45 KB
Del
OK
UserDict.py
6.89 KB
Del
OK
UserDict.pyc
10.05 KB
Del
OK
UserDict.pyo
10.05 KB
Del
OK
UserList.py
3.56 KB
Del
OK
UserList.pyc
6.85 KB
Del
OK
UserList.pyo
6.85 KB
Del
OK
UserString.py
9.47 KB
Del
OK
UserString.pyc
15.38 KB
Del
OK
UserString.pyo
15.38 KB
Del
OK
_LWPCookieJar.py
6.4 KB
Del
OK
_LWPCookieJar.pyc
5.38 KB
Del
OK
_LWPCookieJar.pyo
5.38 KB
Del
OK
_MozillaCookieJar.py
5.66 KB
Del
OK
_MozillaCookieJar.pyc
4.41 KB
Del
OK
_MozillaCookieJar.pyo
4.37 KB
Del
OK
__future__.py
4.28 KB
Del
OK
__future__.pyc
4.2 KB
Del
OK
__future__.pyo
4.2 KB
Del
OK
__phello__.foo.py
64 B
Del
OK
__phello__.foo.pyc
138 B
Del
OK
__phello__.foo.pyo
138 B
Del
OK
_abcoll.py
18.18 KB
Del
OK
_abcoll.pyc
26.4 KB
Del
OK
_abcoll.pyo
26.4 KB
Del
OK
_osx_support.py
18.65 KB
Del
OK
_osx_support.pyc
11.72 KB
Del
OK
_osx_support.pyo
11.72 KB
Del
OK
_pyio.py
68 KB
Del
OK
_pyio.pyc
65.41 KB
Del
OK
_pyio.pyo
65.41 KB
Del
OK
_strptime.py
20.24 KB
Del
OK
_strptime.pyc
15.07 KB
Del
OK
_strptime.pyo
15.07 KB
Del
OK
_sysconfigdata.py
18.9 KB
Del
OK
_sysconfigdata.pyc
22 KB
Del
OK
_sysconfigdata.pyo
22 KB
Del
OK
_threading_local.py
7.09 KB
Del
OK
_threading_local.pyc
6.34 KB
Del
OK
_threading_local.pyo
6.34 KB
Del
OK
_weakrefset.py
5.77 KB
Del
OK
_weakrefset.pyc
10.06 KB
Del
OK
_weakrefset.pyo
10.06 KB
Del
OK
abc.py
6.98 KB
Del
OK
abc.pyc
6.14 KB
Del
OK
abc.pyo
6.08 KB
Del
OK
aifc.py
33.77 KB
Del
OK
aifc.pyc
30.67 KB
Del
OK
aifc.pyo
30.67 KB
Del
OK
antigravity.py
60 B
Del
OK
antigravity.pyc
216 B
Del
OK
antigravity.pyo
216 B
Del
OK
anydbm.py
2.6 KB
Del
OK
anydbm.pyc
2.77 KB
Del
OK
anydbm.pyo
2.77 KB
Del
OK
argparse.py
87.14 KB
Del
OK
argparse.pyc
64.83 KB
Del
OK
argparse.pyo
64.67 KB
Del
OK
ast.py
11.53 KB
Del
OK
ast.pyc
12.94 KB
Del
OK
ast.pyo
12.94 KB
Del
OK
asynchat.py
11.31 KB
Del
OK
asynchat.pyc
8.98 KB
Del
OK
asynchat.pyo
8.98 KB
Del
OK
asyncore.py
20.45 KB
Del
OK
asyncore.pyc
19.2 KB
Del
OK
asyncore.pyo
19.2 KB
Del
OK
atexit.py
1.67 KB
Del
OK
atexit.pyc
2.23 KB
Del
OK
atexit.pyo
2.23 KB
Del
OK
audiodev.py
7.42 KB
Del
OK
audiodev.pyc
8.61 KB
Del
OK
audiodev.pyo
8.61 KB
Del
OK
base64.py
11.54 KB
Del
OK
base64.pyc
11.26 KB
Del
OK
base64.pyo
11.26 KB
Del
OK
bdb.py
21.21 KB
Del
OK
bdb.pyc
19.43 KB
Del
OK
bdb.pyo
19.43 KB
Del
OK
binhex.py
14.35 KB
Del
OK
binhex.pyc
15.75 KB
Del
OK
binhex.pyo
15.75 KB
Del
OK
bisect.py
2.53 KB
Del
OK
bisect.pyc
3.06 KB
Del
OK
bisect.pyo
3.06 KB
Del
OK
bsddb
-
Del
OK
cProfile.py
6.43 KB
Del
OK
cProfile.pyc
6.42 KB
Del
OK
cProfile.pyo
6.42 KB
Del
OK
calendar.py
22.84 KB
Del
OK
calendar.pyc
28.26 KB
Del
OK
calendar.pyo
28.26 KB
Del
OK
cgi.py
34.97 KB
Del
OK
cgi.pyc
33.24 KB
Del
OK
cgi.pyo
33.24 KB
Del
OK
cgitb.py
11.89 KB
Del
OK
cgitb.pyc
12.08 KB
Del
OK
cgitb.pyo
12.08 KB
Del
OK
chunk.py
5.29 KB
Del
OK
chunk.pyc
5.61 KB
Del
OK
chunk.pyo
5.61 KB
Del
OK
cmd.py
14.67 KB
Del
OK
cmd.pyc
13.98 KB
Del
OK
cmd.pyo
13.98 KB
Del
OK
code.py
9.95 KB
Del
OK
code.pyc
10.29 KB
Del
OK
code.pyo
10.29 KB
Del
OK
codecs.py
35.3 KB
Del
OK
codecs.pyc
37.15 KB
Del
OK
codecs.pyo
37.15 KB
Del
OK
codeop.py
5.86 KB
Del
OK
codeop.pyc
6.57 KB
Del
OK
codeop.pyo
6.57 KB
Del
OK
collections.py
27.15 KB
Del
OK
collections.pyc
26.21 KB
Del
OK
collections.pyo
26.16 KB
Del
OK
colorsys.py
3.6 KB
Del
OK
colorsys.pyc
4 KB
Del
OK
colorsys.pyo
4 KB
Del
OK
commands.py
2.49 KB
Del
OK
commands.pyc
2.49 KB
Del
OK
commands.pyo
2.49 KB
Del
OK
compileall.py
7.58 KB
Del
OK
compileall.pyc
6.93 KB
Del
OK
compileall.pyo
6.93 KB
Del
OK
compiler
-
Del
OK
config
-
Del
OK
contextlib.py
4.32 KB
Del
OK
contextlib.pyc
4.5 KB
Del
OK
contextlib.pyo
4.5 KB
Del
OK
cookielib.py
63.95 KB
Del
OK
cookielib.pyc
54.67 KB
Del
OK
cookielib.pyo
54.49 KB
Del
OK
copy.py
11.26 KB
Del
OK
copy.pyc
12.21 KB
Del
OK
copy.pyo
12.13 KB
Del
OK
copy_reg.py
6.81 KB
Del
OK
copy_reg.pyc
5.19 KB
Del
OK
copy_reg.pyo
5.14 KB
Del
OK
crypt.py
2.24 KB
Del
OK
crypt.pyc
2.95 KB
Del
OK
crypt.pyo
2.95 KB
Del
OK
csv.py
16.32 KB
Del
OK
csv.pyc
13.56 KB
Del
OK
csv.pyo
13.56 KB
Del
OK
ctypes
-
Del
OK
curses
-
Del
OK
dbhash.py
498 B
Del
OK
dbhash.pyc
744 B
Del
OK
dbhash.pyo
744 B
Del
OK
decimal.py
216.73 KB
Del
OK
decimal.pyc
171.36 KB
Del
OK
decimal.pyo
171.36 KB
Del
OK
difflib.py
80.4 KB
Del
OK
difflib.pyc
61.13 KB
Del
OK
difflib.pyo
61.08 KB
Del
OK
dircache.py
1.1 KB
Del
OK
dircache.pyc
1.59 KB
Del
OK
dircache.pyo
1.59 KB
Del
OK
dis.py
6.35 KB
Del
OK
dis.pyc
6.18 KB
Del
OK
dis.pyo
6.18 KB
Del
OK
distutils
-
Del
OK
doctest.py
102.63 KB
Del
OK
doctest.pyc
83.21 KB
Del
OK
doctest.pyo
82.93 KB
Del
OK
dumbdbm.py
8.93 KB
Del
OK
dumbdbm.pyc
6.83 KB
Del
OK
dumbdbm.pyo
6.83 KB
Del
OK
dummy_thread.py
4.31 KB
Del
OK
dummy_thread.pyc
5.46 KB
Del
OK
dummy_thread.pyo
5.46 KB
Del
OK
dummy_threading.py
2.74 KB
Del
OK
dummy_threading.pyc
1.27 KB
Del
OK
dummy_threading.pyo
1.27 KB
Del
OK
email
-
Del
OK
encodings
-
Del
OK
ensurepip
-
Del
OK
filecmp.py
9.36 KB
Del
OK
filecmp.pyc
9.65 KB
Del
OK
filecmp.pyo
9.65 KB
Del
OK
fileinput.py
13.42 KB
Del
OK
fileinput.pyc
14.54 KB
Del
OK
fileinput.pyo
14.54 KB
Del
OK
fnmatch.py
3.24 KB
Del
OK
fnmatch.pyc
3.61 KB
Del
OK
fnmatch.pyo
3.61 KB
Del
OK
formatter.py
14.56 KB
Del
OK
formatter.pyc
19.71 KB
Del
OK
formatter.pyo
19.71 KB
Del
OK
fpformat.py
4.62 KB
Del
OK
fpformat.pyc
4.69 KB
Del
OK
fpformat.pyo
4.69 KB
Del
OK
fractions.py
21.87 KB
Del
OK
fractions.pyc
19.74 KB
Del
OK
fractions.pyo
19.74 KB
Del
OK
ftplib.py
37.3 KB
Del
OK
ftplib.pyc
34.82 KB
Del
OK
ftplib.pyo
34.82 KB
Del
OK
functools.py
4.69 KB
Del
OK
functools.pyc
6.85 KB
Del
OK
functools.pyo
6.85 KB
Del
OK
genericpath.py
3.13 KB
Del
OK
genericpath.pyc
3.57 KB
Del
OK
genericpath.pyo
3.57 KB
Del
OK
getopt.py
7.15 KB
Del
OK
getopt.pyc
6.63 KB
Del
OK
getopt.pyo
6.58 KB
Del
OK
getpass.py
5.43 KB
Del
OK
getpass.pyc
4.72 KB
Del
OK
getpass.pyo
4.72 KB
Del
OK
gettext.py
22.13 KB
Del
OK
gettext.pyc
18.17 KB
Del
OK
gettext.pyo
18.17 KB
Del
OK
glob.py
3.04 KB
Del
OK
glob.pyc
2.98 KB
Del
OK
glob.pyo
2.98 KB
Del
OK
gzip.py
18.58 KB
Del
OK
gzip.pyc
15.26 KB
Del
OK
gzip.pyo
15.26 KB
Del
OK
hashlib.py
7.66 KB
Del
OK
hashlib.pyc
6.86 KB
Del
OK
hashlib.pyo
6.86 KB
Del
OK
heapq.py
17.87 KB
Del
OK
heapq.pyc
14.45 KB
Del
OK
heapq.pyo
14.45 KB
Del
OK
hmac.py
4.48 KB
Del
OK
hmac.pyc
4.56 KB
Del
OK
hmac.pyo
4.56 KB
Del
OK
hotshot
-
Del
OK
htmlentitydefs.py
17.63 KB
Del
OK
htmlentitydefs.pyc
6.23 KB
Del
OK
htmlentitydefs.pyo
6.23 KB
Del
OK
htmllib.py
12.57 KB
Del
OK
htmllib.pyc
20.99 KB
Del
OK
htmllib.pyo
20.99 KB
Del
OK
httplib.py
51.07 KB
Del
OK
httplib.pyc
37.88 KB
Del
OK
httplib.pyo
37.7 KB
Del
OK
idlelib
-
Del
OK
ihooks.py
18.54 KB
Del
OK
ihooks.pyc
21.75 KB
Del
OK
ihooks.pyo
21.75 KB
Del
OK
imaplib.py
47.23 KB
Del
OK
imaplib.pyc
45.19 KB
Del
OK
imaplib.pyo
42.49 KB
Del
OK
imghdr.py
3.46 KB
Del
OK
imghdr.pyc
4.93 KB
Del
OK
imghdr.pyo
4.93 KB
Del
OK
importlib
-
Del
OK
imputil.py
25.16 KB
Del
OK
imputil.pyc
15.74 KB
Del
OK
imputil.pyo
15.57 KB
Del
OK
inspect.py
42 KB
Del
OK
inspect.pyc
40.16 KB
Del
OK
inspect.pyo
40.16 KB
Del
OK
io.py
3.24 KB
Del
OK
io.pyc
3.57 KB
Del
OK
io.pyo
3.57 KB
Del
OK
json
-
Del
OK
keyword.py
1.96 KB
Del
OK
keyword.pyc
2.08 KB
Del
OK
keyword.pyo
2.08 KB
Del
OK
lib-dynload
-
Del
OK
lib2to3
-
Del
OK
linecache.py
3.93 KB
Del
OK
linecache.pyc
3.27 KB
Del
OK
linecache.pyo
3.27 KB
Del
OK
locale.py
100.42 KB
Del
OK
locale.pyc
55.69 KB
Del
OK
locale.pyo
55.69 KB
Del
OK
logging
-
Del
OK
macpath.py
6.14 KB
Del
OK
macpath.pyc
7.74 KB
Del
OK
macpath.pyo
7.74 KB
Del
OK
macurl2path.py
2.67 KB
Del
OK
macurl2path.pyc
2.24 KB
Del
OK
macurl2path.pyo
2.24 KB
Del
OK
mailbox.py
79.34 KB
Del
OK
mailbox.pyc
77.7 KB
Del
OK
mailbox.pyo
77.65 KB
Del
OK
mailcap.py
7.25 KB
Del
OK
mailcap.pyc
7.08 KB
Del
OK
mailcap.pyo
7.08 KB
Del
OK
markupbase.py
14.3 KB
Del
OK
markupbase.pyc
9.27 KB
Del
OK
markupbase.pyo
9.07 KB
Del
OK
md5.py
358 B
Del
OK
md5.pyc
391 B
Del
OK
md5.pyo
391 B
Del
OK
mhlib.py
32.65 KB
Del
OK
mhlib.pyc
33.98 KB
Del
OK
mhlib.pyo
33.98 KB
Del
OK
mimetools.py
7 KB
Del
OK
mimetools.pyc
8.26 KB
Del
OK
mimetools.pyo
8.26 KB
Del
OK
mimetypes.py
20.54 KB
Del
OK
mimetypes.pyc
18.3 KB
Del
OK
mimetypes.pyo
18.3 KB
Del
OK
mimify.py
14.68 KB
Del
OK
mimify.pyc
11.91 KB
Del
OK
mimify.pyo
11.91 KB
Del
OK
modulefinder.py
23.89 KB
Del
OK
modulefinder.pyc
19.12 KB
Del
OK
modulefinder.pyo
19.04 KB
Del
OK
multifile.py
4.71 KB
Del
OK
multifile.pyc
5.48 KB
Del
OK
multifile.pyo
5.44 KB
Del
OK
multiprocessing
-
Del
OK
mutex.py
1.83 KB
Del
OK
mutex.pyc
2.55 KB
Del
OK
mutex.pyo
2.55 KB
Del
OK
netrc.py
5.75 KB
Del
OK
netrc.pyc
4.72 KB
Del
OK
netrc.pyo
4.72 KB
Del
OK
new.py
610 B
Del
OK
new.pyc
875 B
Del
OK
new.pyo
875 B
Del
OK
nntplib.py
20.97 KB
Del
OK
nntplib.pyc
21.11 KB
Del
OK
nntplib.pyo
21.11 KB
Del
OK
ntpath.py
18.97 KB
Del
OK
ntpath.pyc
13.1 KB
Del
OK
ntpath.pyo
13.1 KB
Del
OK
nturl2path.py
2.36 KB
Del
OK
nturl2path.pyc
1.81 KB
Del
OK
nturl2path.pyo
1.81 KB
Del
OK
numbers.py
10.08 KB
Del
OK
numbers.pyc
14.47 KB
Del
OK
numbers.pyo
14.47 KB
Del
OK
opcode.py
5.35 KB
Del
OK
opcode.pyc
6.06 KB
Del
OK
opcode.pyo
6.06 KB
Del
OK
optparse.py
59.77 KB
Del
OK
optparse.pyc
54.41 KB
Del
OK
optparse.pyo
54.33 KB
Del
OK
os.py
25.3 KB
Del
OK
os.pyc
25.76 KB
Del
OK
os.pyo
25.76 KB
Del
OK
os2emxpath.py
4.53 KB
Del
OK
os2emxpath.pyc
4.53 KB
Del
OK
os2emxpath.pyo
4.53 KB
Del
OK
pdb.doc
7.73 KB
Del
OK
pdb.py
45.03 KB
Del
OK
pdb.pyc
44.09 KB
Del
OK
pdb.pyo
44.09 KB
Del
OK
pickle.py
44.42 KB
Del
OK
pickle.pyc
38.98 KB
Del
OK
pickle.pyo
38.79 KB
Del
OK
pickletools.py
72.78 KB
Del
OK
pickletools.pyc
56.1 KB
Del
OK
pickletools.pyo
55.26 KB
Del
OK
pipes.py
9.36 KB
Del
OK
pipes.pyc
9.29 KB
Del
OK
pipes.pyo
9.29 KB
Del
OK
pkgutil.py
19.77 KB
Del
OK
pkgutil.pyc
18.93 KB
Del
OK
pkgutil.pyo
18.93 KB
Del
OK
plat-linux2
-
Del
OK
platform.py
51.56 KB
Del
OK
platform.pyc
37.7 KB
Del
OK
platform.pyo
37.7 KB
Del
OK
plistlib.py
14.83 KB
Del
OK
plistlib.pyc
19.54 KB
Del
OK
plistlib.pyo
19.46 KB
Del
OK
popen2.py
8.22 KB
Del
OK
popen2.pyc
9.02 KB
Del
OK
popen2.pyo
8.98 KB
Del
OK
poplib.py
12.52 KB
Del
OK
poplib.pyc
13.45 KB
Del
OK
poplib.pyo
13.45 KB
Del
OK
posixfile.py
7.82 KB
Del
OK
posixfile.pyc
7.63 KB
Del
OK
posixfile.pyo
7.63 KB
Del
OK
posixpath.py
13.96 KB
Del
OK
posixpath.pyc
11.49 KB
Del
OK
posixpath.pyo
11.49 KB
Del
OK
pprint.py
11.5 KB
Del
OK
pprint.pyc
10.2 KB
Del
OK
pprint.pyo
10.02 KB
Del
OK
profile.py
22.26 KB
Del
OK
profile.pyc
16.57 KB
Del
OK
profile.pyo
16.32 KB
Del
OK
pstats.py
26.09 KB
Del
OK
pstats.pyc
25.19 KB
Del
OK
pstats.pyo
25.19 KB
Del
OK
pty.py
4.94 KB
Del
OK
pty.pyc
4.98 KB
Del
OK
pty.pyo
4.98 KB
Del
OK
py_compile.py
5.8 KB
Del
OK
py_compile.pyc
6.37 KB
Del
OK
py_compile.pyo
6.37 KB
Del
OK
pyclbr.py
13.07 KB
Del
OK
pyclbr.pyc
9.59 KB
Del
OK
pyclbr.pyo
9.59 KB
Del
OK
pydoc.py
93.43 KB
Del
OK
pydoc.pyc
92.69 KB
Del
OK
pydoc.pyo
92.63 KB
Del
OK
pydoc_data
-
Del
OK
quopri.py
6.81 KB
Del
OK
quopri.pyc
6.56 KB
Del
OK
quopri.pyo
6.56 KB
Del
OK
random.py
31.7 KB
Del
OK
random.pyc
25.65 KB
Del
OK
random.pyo
25.65 KB
Del
OK
re.py
13.11 KB
Del
OK
re.pyc
13.37 KB
Del
OK
re.pyo
13.37 KB
Del
OK
repr.py
4.2 KB
Del
OK
repr.pyc
5.47 KB
Del
OK
repr.pyo
5.47 KB
Del
OK
rexec.py
19.68 KB
Del
OK
rexec.pyc
24 KB
Del
OK
rexec.pyo
24 KB
Del
OK
rfc822.py
32.76 KB
Del
OK
rfc822.pyc
31.83 KB
Del
OK
rfc822.pyo
31.83 KB
Del
OK
rlcompleter.py
5.85 KB
Del
OK
rlcompleter.pyc
6.04 KB
Del
OK
rlcompleter.pyo
6.04 KB
Del
OK
robotparser.py
7.51 KB
Del
OK
robotparser.pyc
8.12 KB
Del
OK
robotparser.pyo
8.12 KB
Del
OK
runpy.py
10.82 KB
Del
OK
runpy.pyc
8.85 KB
Del
OK
runpy.pyo
8.85 KB
Del
OK
sched.py
4.97 KB
Del
OK
sched.pyc
4.99 KB
Del
OK
sched.pyo
4.99 KB
Del
OK
sets.py
18.6 KB
Del
OK
sets.pyc
17.21 KB
Del
OK
sets.pyo
17.21 KB
Del
OK
sgmllib.py
17.46 KB
Del
OK
sgmllib.pyc
15.67 KB
Del
OK
sgmllib.pyo
15.67 KB
Del
OK
sha.py
393 B
Del
OK
sha.pyc
434 B
Del
OK
sha.pyo
434 B
Del
OK
shelve.py
7.99 KB
Del
OK
shelve.pyc
10.36 KB
Del
OK
shelve.pyo
10.36 KB
Del
OK
shlex.py
10.9 KB
Del
OK
shlex.pyc
7.55 KB
Del
OK
shlex.pyo
7.55 KB
Del
OK
shutil.py
19.41 KB
Del
OK
shutil.pyc
19.19 KB
Del
OK
shutil.pyo
19.19 KB
Del
OK
site-packages
-
Del
OK
site.py
19.18 KB
Del
OK
site.pyc
19.35 KB
Del
OK
site.pyo
19.35 KB
Del
OK
smtpd.py
18.12 KB
Del
OK
smtpd.pyc
15.9 KB
Del
OK
smtpd.pyo
15.9 KB
Del
OK
smtplib.py
31.39 KB
Del
OK
smtplib.pyc
30.29 KB
Del
OK
smtplib.pyo
30.29 KB
Del
OK
sndhdr.py
5.83 KB
Del
OK
sndhdr.pyc
7.4 KB
Del
OK
sndhdr.pyo
7.4 KB
Del
OK
socket.py
20.13 KB
Del
OK
socket.pyc
16.15 KB
Del
OK
socket.pyo
16.07 KB
Del
OK
sqlite3
-
Del
OK
sre.py
384 B
Del
OK
sre.pyc
532 B
Del
OK
sre.pyo
532 B
Del
OK
sre_compile.py
19.36 KB
Del
OK
sre_compile.pyc
12.46 KB
Del
OK
sre_compile.pyo
12.3 KB
Del
OK
sre_constants.py
7.03 KB
Del
OK
sre_constants.pyc
6.11 KB
Del
OK
sre_constants.pyo
6.11 KB
Del
OK
sre_parse.py
29.98 KB
Del
OK
sre_parse.pyc
21.12 KB
Del
OK
sre_parse.pyo
21.12 KB
Del
OK
ssl.py
36.58 KB
Del
OK
ssl.pyc
32.24 KB
Del
OK
ssl.pyo
32.24 KB
Del
OK
stat.py
1.8 KB
Del
OK
stat.pyc
2.81 KB
Del
OK
stat.pyo
2.81 KB
Del
OK
statvfs.py
898 B
Del
OK
statvfs.pyc
633 B
Del
OK
statvfs.pyo
633 B
Del
OK
string.py
21.04 KB
Del
OK
string.pyc
20.63 KB
Del
OK
string.pyo
20.63 KB
Del
OK
stringold.py
12.16 KB
Del
OK
stringold.pyc
12.6 KB
Del
OK
stringold.pyo
12.6 KB
Del
OK
stringprep.py
13.21 KB
Del
OK
stringprep.pyc
14.4 KB
Del
OK
stringprep.pyo
14.33 KB
Del
OK
struct.py
82 B
Del
OK
struct.pyc
252 B
Del
OK
struct.pyo
252 B
Del
OK
subprocess.py
49.34 KB
Del
OK
subprocess.pyc
32.32 KB
Del
OK
subprocess.pyo
32.32 KB
Del
OK
sunau.py
16.82 KB
Del
OK
sunau.pyc
18.57 KB
Del
OK
sunau.pyo
18.57 KB
Del
OK
sunaudio.py
1.37 KB
Del
OK
sunaudio.pyc
2 KB
Del
OK
sunaudio.pyo
2 KB
Del
OK
symbol.py
2.02 KB
Del
OK
symbol.pyc
2.98 KB
Del
OK
symbol.pyo
2.98 KB
Del
OK
symtable.py
7.26 KB
Del
OK
symtable.pyc
12.14 KB
Del
OK
symtable.pyo
12.02 KB
Del
OK
sysconfig.py
22.32 KB
Del
OK
sysconfig.pyc
17.73 KB
Del
OK
sysconfig.pyo
17.73 KB
Del
OK
tabnanny.py
11.08 KB
Del
OK
tabnanny.pyc
8.31 KB
Del
OK
tabnanny.pyo
8.31 KB
Del
OK
tarfile.py
88.45 KB
Del
OK
tarfile.pyc
76.54 KB
Del
OK
tarfile.pyo
76.54 KB
Del
OK
telnetlib.py
26.4 KB
Del
OK
telnetlib.pyc
23.03 KB
Del
OK
telnetlib.pyo
23.03 KB
Del
OK
tempfile.py
19.09 KB
Del
OK
tempfile.pyc
20.55 KB
Del
OK
tempfile.pyo
20.55 KB
Del
OK
test
-
Del
OK
textwrap.py
16.88 KB
Del
OK
textwrap.pyc
11.99 KB
Del
OK
textwrap.pyo
11.9 KB
Del
OK
this.py
1002 B
Del
OK
this.pyc
1.2 KB
Del
OK
this.pyo
1.2 KB
Del
OK
threading.py
46.17 KB
Del
OK
threading.pyc
42.97 KB
Del
OK
threading.pyo
40.84 KB
Del
OK
timeit.py
12.5 KB
Del
OK
timeit.pyc
12.06 KB
Del
OK
timeit.pyo
12.06 KB
Del
OK
toaiff.py
3.07 KB
Del
OK
toaiff.pyc
3.08 KB
Del
OK
toaiff.pyo
3.08 KB
Del
OK
token.py
2.85 KB
Del
OK
token.pyc
3.79 KB
Del
OK
token.pyo
3.79 KB
Del
OK
tokenize.py
17.07 KB
Del
OK
tokenize.pyc
14.37 KB
Del
OK
tokenize.pyo
14.31 KB
Del
OK
trace.py
29.2 KB
Del
OK
trace.pyc
22.69 KB
Del
OK
trace.pyo
22.63 KB
Del
OK
traceback.py
11.02 KB
Del
OK
traceback.pyc
11.66 KB
Del
OK
traceback.pyo
11.66 KB
Del
OK
tty.py
879 B
Del
OK
tty.pyc
1.32 KB
Del
OK
tty.pyo
1.32 KB
Del
OK
types.py
2.04 KB
Del
OK
types.pyc
2.75 KB
Del
OK
types.pyo
2.75 KB
Del
OK
unittest
-
Del
OK
urllib.py
58.82 KB
Del
OK
urllib.pyc
51.35 KB
Del
OK
urllib.pyo
51.25 KB
Del
OK
urllib2.py
51.31 KB
Del
OK
urllib2.pyc
47.8 KB
Del
OK
urllib2.pyo
47.71 KB
Del
OK
urlparse.py
16.29 KB
Del
OK
urlparse.pyc
15.51 KB
Del
OK
urlparse.pyo
15.51 KB
Del
OK
user.py
1.59 KB
Del
OK
user.pyc
1.7 KB
Del
OK
user.pyo
1.7 KB
Del
OK
uu.py
6.55 KB
Del
OK
uu.pyc
4.35 KB
Del
OK
uu.pyo
4.35 KB
Del
OK
uuid.py
22.63 KB
Del
OK
uuid.pyc
23.22 KB
Del
OK
uuid.pyo
23.11 KB
Del
OK
warnings.py
14.48 KB
Del
OK
warnings.pyc
13.49 KB
Del
OK
warnings.pyo
12.71 KB
Del
OK
wave.py
18.15 KB
Del
OK
wave.pyc
20.19 KB
Del
OK
wave.pyo
20.05 KB
Del
OK
weakref.py
14.48 KB
Del
OK
weakref.pyc
16.73 KB
Del
OK
weakref.pyo
16.73 KB
Del
OK
webbrowser.py
22.2 KB
Del
OK
webbrowser.pyc
19.86 KB
Del
OK
webbrowser.pyo
19.81 KB
Del
OK
whichdb.py
3.31 KB
Del
OK
whichdb.pyc
2.21 KB
Del
OK
whichdb.pyo
2.21 KB
Del
OK
wsgiref
-
Del
OK
wsgiref.egg-info
187 B
Del
OK
xdrlib.py
5.93 KB
Del
OK
xdrlib.pyc
10.2 KB
Del
OK
xdrlib.pyo
10.2 KB
Del
OK
xml
-
Del
OK
xmllib.py
34.05 KB
Del
OK
xmllib.pyc
26.9 KB
Del
OK
xmllib.pyo
26.9 KB
Del
OK
xmlrpclib.py
50.91 KB
Del
OK
xmlrpclib.pyc
44.81 KB
Del
OK
xmlrpclib.pyo
44.63 KB
Del
OK
zipfile.py
58.08 KB
Del
OK
zipfile.pyc
41.92 KB
Del
OK
zipfile.pyo
41.92 KB
Del
OK
Edit: random.py
"""Random variable generators. integers -------- uniform within range sequences --------- pick random element pick random sample generate random permutation distributions on the real line: ------------------------------ uniform triangular normal (Gaussian) lognormal negative exponential gamma beta pareto Weibull distributions on the circle (angles 0 to 2pi) --------------------------------------------- circular uniform von Mises General notes on the underlying Mersenne Twister core generator: * The period is 2**19937-1. * It is one of the most extensively tested generators in existence. * Without a direct way to compute N steps forward, the semantics of jumpahead(n) are weakened to simply jump to another distant state and rely on the large period to avoid overlapping sequences. * The random() method is implemented in C, executes in a single Python step, and is, therefore, threadsafe. """ from __future__ import division from warnings import warn as _warn from types import MethodType as _MethodType, BuiltinMethodType as _BuiltinMethodType from math import log as _log, exp as _exp, pi as _pi, e as _e, ceil as _ceil from math import sqrt as _sqrt, acos as _acos, cos as _cos, sin as _sin from os import urandom as _urandom from binascii import hexlify as _hexlify import hashlib as _hashlib __all__ = ["Random","seed","random","uniform","randint","choice","sample", "randrange","shuffle","normalvariate","lognormvariate", "expovariate","vonmisesvariate","gammavariate","triangular", "gauss","betavariate","paretovariate","weibullvariate", "getstate","setstate","jumpahead", "WichmannHill", "getrandbits", "SystemRandom"] NV_MAGICCONST = 4 * _exp(-0.5)/_sqrt(2.0) TWOPI = 2.0*_pi LOG4 = _log(4.0) SG_MAGICCONST = 1.0 + _log(4.5) BPF = 53 # Number of bits in a float RECIP_BPF = 2**-BPF # Translated by Guido van Rossum from C source provided by # Adrian Baddeley. Adapted by Raymond Hettinger for use with # the Mersenne Twister and os.urandom() core generators. import _random class Random(_random.Random): """Random number generator base class used by bound module functions. Used to instantiate instances of Random to get generators that don't share state. Especially useful for multi-threaded programs, creating a different instance of Random for each thread, and using the jumpahead() method to ensure that the generated sequences seen by each thread don't overlap. Class Random can also be subclassed if you want to use a different basic generator of your own devising: in that case, override the following methods: random(), seed(), getstate(), setstate() and jumpahead(). Optionally, implement a getrandbits() method so that randrange() can cover arbitrarily large ranges. """ VERSION = 3 # used by getstate/setstate def __init__(self, x=None): """Initialize an instance. Optional argument x controls seeding, as for Random.seed(). """ self.seed(x) self.gauss_next = None def seed(self, a=None): """Initialize internal state of the random number generator. None or no argument seeds from current time or from an operating system specific randomness source if available. If a is not None or is an int or long, hash(a) is used instead. Hash values for some types are nondeterministic when the PYTHONHASHSEED environment variable is enabled. """ if a is None: try: # Seed with enough bytes to span the 19937 bit # state space for the Mersenne Twister a = long(_hexlify(_urandom(2500)), 16) except NotImplementedError: import time a = long(time.time() * 256) # use fractional seconds super(Random, self).seed(a) self.gauss_next = None def getstate(self): """Return internal state; can be passed to setstate() later.""" return self.VERSION, super(Random, self).getstate(), self.gauss_next def setstate(self, state): """Restore internal state from object returned by getstate().""" version = state[0] if version == 3: version, internalstate, self.gauss_next = state super(Random, self).setstate(internalstate) elif version == 2: version, internalstate, self.gauss_next = state # In version 2, the state was saved as signed ints, which causes # inconsistencies between 32/64-bit systems. The state is # really unsigned 32-bit ints, so we convert negative ints from # version 2 to positive longs for version 3. try: internalstate = tuple( long(x) % (2**32) for x in internalstate ) except ValueError, e: raise TypeError, e super(Random, self).setstate(internalstate) else: raise ValueError("state with version %s passed to " "Random.setstate() of version %s" % (version, self.VERSION)) def jumpahead(self, n): """Change the internal state to one that is likely far away from the current state. This method will not be in Py3.x, so it is better to simply reseed. """ # The super.jumpahead() method uses shuffling to change state, # so it needs a large and "interesting" n to work with. Here, # we use hashing to create a large n for the shuffle. s = repr(n) + repr(self.getstate()) n = int(_hashlib.new('sha512', s).hexdigest(), 16) super(Random, self).jumpahead(n) ## ---- Methods below this point do not need to be overridden when ## ---- subclassing for the purpose of using a different core generator. ## -------------------- pickle support ------------------- def __getstate__(self): # for pickle return self.getstate() def __setstate__(self, state): # for pickle self.setstate(state) def __reduce__(self): return self.__class__, (), self.getstate() ## -------------------- integer methods ------------------- def randrange(self, start, stop=None, step=1, _int=int, _maxwidth=1L<<BPF): """Choose a random item from range(start, stop[, step]). This fixes the problem with randint() which includes the endpoint; in Python this is usually not what you want. """ # This code is a bit messy to make it fast for the # common case while still doing adequate error checking. istart = _int(start) if istart != start: raise ValueError, "non-integer arg 1 for randrange()" if stop is None: if istart > 0: if istart >= _maxwidth: return self._randbelow(istart) return _int(self.random() * istart) raise ValueError, "empty range for randrange()" # stop argument supplied. istop = _int(stop) if istop != stop: raise ValueError, "non-integer stop for randrange()" width = istop - istart if step == 1 and width > 0: # Note that # int(istart + self.random()*width) # instead would be incorrect. For example, consider istart # = -2 and istop = 0. Then the guts would be in # -2.0 to 0.0 exclusive on both ends (ignoring that random() # might return 0.0), and because int() truncates toward 0, the # final result would be -1 or 0 (instead of -2 or -1). # istart + int(self.random()*width) # would also be incorrect, for a subtler reason: the RHS # can return a long, and then randrange() would also return # a long, but we're supposed to return an int (for backward # compatibility). if width >= _maxwidth: return _int(istart + self._randbelow(width)) return _int(istart + _int(self.random()*width)) if step == 1: raise ValueError, "empty range for randrange() (%d,%d, %d)" % (istart, istop, width) # Non-unit step argument supplied. istep = _int(step) if istep != step: raise ValueError, "non-integer step for randrange()" if istep > 0: n = (width + istep - 1) // istep elif istep < 0: n = (width + istep + 1) // istep else: raise ValueError, "zero step for randrange()" if n <= 0: raise ValueError, "empty range for randrange()" if n >= _maxwidth: return istart + istep*self._randbelow(n) return istart + istep*_int(self.random() * n) def randint(self, a, b): """Return random integer in range [a, b], including both end points. """ return self.randrange(a, b+1) def _randbelow(self, n, _log=_log, _int=int, _maxwidth=1L<<BPF, _Method=_MethodType, _BuiltinMethod=_BuiltinMethodType): """Return a random int in the range [0,n) Handles the case where n has more bits than returned by a single call to the underlying generator. """ try: getrandbits = self.getrandbits except AttributeError: pass else: # Only call self.getrandbits if the original random() builtin method # has not been overridden or if a new getrandbits() was supplied. # This assures that the two methods correspond. if type(self.random) is _BuiltinMethod or type(getrandbits) is _Method: k = _int(1.00001 + _log(n-1, 2.0)) # 2**k > n-1 > 2**(k-2) r = getrandbits(k) while r >= n: r = getrandbits(k) return r if n >= _maxwidth: _warn("Underlying random() generator does not supply \n" "enough bits to choose from a population range this large") return _int(self.random() * n) ## -------------------- sequence methods ------------------- def choice(self, seq): """Choose a random element from a non-empty sequence.""" return seq[int(self.random() * len(seq))] # raises IndexError if seq is empty def shuffle(self, x, random=None): """x, random=random.random -> shuffle list x in place; return None. Optional arg random is a 0-argument function returning a random float in [0.0, 1.0); by default, the standard random.random. """ if random is None: random = self.random _int = int for i in reversed(xrange(1, len(x))): # pick an element in x[:i+1] with which to exchange x[i] j = _int(random() * (i+1)) x[i], x[j] = x[j], x[i] def sample(self, population, k): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. To choose a sample in a range of integers, use xrange as an argument. This is especially fast and space efficient for sampling from a large population: sample(xrange(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. n = len(population) if not 0 <= k <= n: raise ValueError("sample larger than population") random = self.random _int = int result = [None] * k setsize = 21 # size of a small set minus size of an empty list if k > 5: setsize += 4 ** _ceil(_log(k * 3, 4)) # table size for big sets if n <= setsize or hasattr(population, "keys"): # An n-length list is smaller than a k-length set, or this is a # mapping type so the other algorithm wouldn't work. pool = list(population) for i in xrange(k): # invariant: non-selected at [0,n-i) j = _int(random() * (n-i)) result[i] = pool[j] pool[j] = pool[n-i-1] # move non-selected item into vacancy else: try: selected = set() selected_add = selected.add for i in xrange(k): j = _int(random() * n) while j in selected: j = _int(random() * n) selected_add(j) result[i] = population[j] except (TypeError, KeyError): # handle (at least) sets if isinstance(population, list): raise return self.sample(tuple(population), k) return result ## -------------------- real-valued distributions ------------------- ## -------------------- uniform distribution ------------------- def uniform(self, a, b): "Get a random number in the range [a, b) or [a, b] depending on rounding." return a + (b-a) * self.random() ## -------------------- triangular -------------------- def triangular(self, low=0.0, high=1.0, mode=None): """Triangular distribution. Continuous distribution bounded by given lower and upper limits, and having a given mode value in-between. http://en.wikipedia.org/wiki/Triangular_distribution """ u = self.random() try: c = 0.5 if mode is None else (mode - low) / (high - low) except ZeroDivisionError: return low if u > c: u = 1.0 - u c = 1.0 - c low, high = high, low return low + (high - low) * (u * c) ** 0.5 ## -------------------- normal distribution -------------------- def normalvariate(self, mu, sigma): """Normal distribution. mu is the mean, and sigma is the standard deviation. """ # mu = mean, sigma = standard deviation # Uses Kinderman and Monahan method. Reference: Kinderman, # A.J. and Monahan, J.F., "Computer generation of random # variables using the ratio of uniform deviates", ACM Trans # Math Software, 3, (1977), pp257-260. random = self.random while 1: u1 = random() u2 = 1.0 - random() z = NV_MAGICCONST*(u1-0.5)/u2 zz = z*z/4.0 if zz <= -_log(u2): break return mu + z*sigma ## -------------------- lognormal distribution -------------------- def lognormvariate(self, mu, sigma): """Log normal distribution. If you take the natural logarithm of this distribution, you'll get a normal distribution with mean mu and standard deviation sigma. mu can have any value, and sigma must be greater than zero. """ return _exp(self.normalvariate(mu, sigma)) ## -------------------- exponential distribution -------------------- def expovariate(self, lambd): """Exponential distribution. lambd is 1.0 divided by the desired mean. It should be nonzero. (The parameter would be called "lambda", but that is a reserved word in Python.) Returned values range from 0 to positive infinity if lambd is positive, and from negative infinity to 0 if lambd is negative. """ # lambd: rate lambd = 1/mean # ('lambda' is a Python reserved word) # we use 1-random() instead of random() to preclude the # possibility of taking the log of zero. return -_log(1.0 - self.random())/lambd ## -------------------- von Mises distribution -------------------- def vonmisesvariate(self, mu, kappa): """Circular data distribution. mu is the mean angle, expressed in radians between 0 and 2*pi, and kappa is the concentration parameter, which must be greater than or equal to zero. If kappa is equal to zero, this distribution reduces to a uniform random angle over the range 0 to 2*pi. """ # mu: mean angle (in radians between 0 and 2*pi) # kappa: concentration parameter kappa (>= 0) # if kappa = 0 generate uniform random angle # Based upon an algorithm published in: Fisher, N.I., # "Statistical Analysis of Circular Data", Cambridge # University Press, 1993. # Thanks to Magnus Kessler for a correction to the # implementation of step 4. random = self.random if kappa <= 1e-6: return TWOPI * random() s = 0.5 / kappa r = s + _sqrt(1.0 + s * s) while 1: u1 = random() z = _cos(_pi * u1) d = z / (r + z) u2 = random() if u2 < 1.0 - d * d or u2 <= (1.0 - d) * _exp(d): break q = 1.0 / r f = (q + z) / (1.0 + q * z) u3 = random() if u3 > 0.5: theta = (mu + _acos(f)) % TWOPI else: theta = (mu - _acos(f)) % TWOPI return theta ## -------------------- gamma distribution -------------------- def gammavariate(self, alpha, beta): """Gamma distribution. Not the gamma function! Conditions on the parameters are alpha > 0 and beta > 0. The probability distribution function is: x ** (alpha - 1) * math.exp(-x / beta) pdf(x) = -------------------------------------- math.gamma(alpha) * beta ** alpha """ # alpha > 0, beta > 0, mean is alpha*beta, variance is alpha*beta**2 # Warning: a few older sources define the gamma distribution in terms # of alpha > -1.0 if alpha <= 0.0 or beta <= 0.0: raise ValueError, 'gammavariate: alpha and beta must be > 0.0' random = self.random if alpha > 1.0: # Uses R.C.H. Cheng, "The generation of Gamma # variables with non-integral shape parameters", # Applied Statistics, (1977), 26, No. 1, p71-74 ainv = _sqrt(2.0 * alpha - 1.0) bbb = alpha - LOG4 ccc = alpha + ainv while 1: u1 = random() if not 1e-7 < u1 < .9999999: continue u2 = 1.0 - random() v = _log(u1/(1.0-u1))/ainv x = alpha*_exp(v) z = u1*u1*u2 r = bbb+ccc*v-x if r + SG_MAGICCONST - 4.5*z >= 0.0 or r >= _log(z): return x * beta elif alpha == 1.0: # expovariate(1) u = random() while u <= 1e-7: u = random() return -_log(u) * beta else: # alpha is between 0 and 1 (exclusive) # Uses ALGORITHM GS of Statistical Computing - Kennedy & Gentle while 1: u = random() b = (_e + alpha)/_e p = b*u if p <= 1.0: x = p ** (1.0/alpha) else: x = -_log((b-p)/alpha) u1 = random() if p > 1.0: if u1 <= x ** (alpha - 1.0): break elif u1 <= _exp(-x): break return x * beta ## -------------------- Gauss (faster alternative) -------------------- def gauss(self, mu, sigma): """Gaussian distribution. mu is the mean, and sigma is the standard deviation. This is slightly faster than the normalvariate() function. Not thread-safe without a lock around calls. """ # When x and y are two variables from [0, 1), uniformly # distributed, then # # cos(2*pi*x)*sqrt(-2*log(1-y)) # sin(2*pi*x)*sqrt(-2*log(1-y)) # # are two *independent* variables with normal distribution # (mu = 0, sigma = 1). # (Lambert Meertens) # (corrected version; bug discovered by Mike Miller, fixed by LM) # Multithreading note: When two threads call this function # simultaneously, it is possible that they will receive the # same return value. The window is very small though. To # avoid this, you have to use a lock around all calls. (I # didn't want to slow this down in the serial case by using a # lock here.) random = self.random z = self.gauss_next self.gauss_next = None if z is None: x2pi = random() * TWOPI g2rad = _sqrt(-2.0 * _log(1.0 - random())) z = _cos(x2pi) * g2rad self.gauss_next = _sin(x2pi) * g2rad return mu + z*sigma ## -------------------- beta -------------------- ## See ## http://mail.python.org/pipermail/python-bugs-list/2001-January/003752.html ## for Ivan Frohne's insightful analysis of why the original implementation: ## ## def betavariate(self, alpha, beta): ## # Discrete Event Simulation in C, pp 87-88. ## ## y = self.expovariate(alpha) ## z = self.expovariate(1.0/beta) ## return z/(y+z) ## ## was dead wrong, and how it probably got that way. def betavariate(self, alpha, beta): """Beta distribution. Conditions on the parameters are alpha > 0 and beta > 0. Returned values range between 0 and 1. """ # This version due to Janne Sinkkonen, and matches all the std # texts (e.g., Knuth Vol 2 Ed 3 pg 134 "the beta distribution"). y = self.gammavariate(alpha, 1.) if y == 0: return 0.0 else: return y / (y + self.gammavariate(beta, 1.)) ## -------------------- Pareto -------------------- def paretovariate(self, alpha): """Pareto distribution. alpha is the shape parameter.""" # Jain, pg. 495 u = 1.0 - self.random() return 1.0 / pow(u, 1.0/alpha) ## -------------------- Weibull -------------------- def weibullvariate(self, alpha, beta): """Weibull distribution. alpha is the scale parameter and beta is the shape parameter. """ # Jain, pg. 499; bug fix courtesy Bill Arms u = 1.0 - self.random() return alpha * pow(-_log(u), 1.0/beta) ## -------------------- Wichmann-Hill ------------------- class WichmannHill(Random): VERSION = 1 # used by getstate/setstate def seed(self, a=None): """Initialize internal state from hashable object. None or no argument seeds from current time or from an operating system specific randomness source if available. If a is not None or an int or long, hash(a) is used instead. If a is an int or long, a is used directly. Distinct values between 0 and 27814431486575L inclusive are guaranteed to yield distinct internal states (this guarantee is specific to the default Wichmann-Hill generator). """ if a is None: try: a = long(_hexlify(_urandom(16)), 16) except NotImplementedError: import time a = long(time.time() * 256) # use fractional seconds if not isinstance(a, (int, long)): a = hash(a) a, x = divmod(a, 30268) a, y = divmod(a, 30306) a, z = divmod(a, 30322) self._seed = int(x)+1, int(y)+1, int(z)+1 self.gauss_next = None def random(self): """Get the next random number in the range [0.0, 1.0).""" # Wichman-Hill random number generator. # # Wichmann, B. A. & Hill, I. D. (1982) # Algorithm AS 183: # An efficient and portable pseudo-random number generator # Applied Statistics 31 (1982) 188-190 # # see also: # Correction to Algorithm AS 183 # Applied Statistics 33 (1984) 123 # # McLeod, A. I. (1985) # A remark on Algorithm AS 183 # Applied Statistics 34 (1985),198-200 # This part is thread-unsafe: # BEGIN CRITICAL SECTION x, y, z = self._seed x = (171 * x) % 30269 y = (172 * y) % 30307 z = (170 * z) % 30323 self._seed = x, y, z # END CRITICAL SECTION # Note: on a platform using IEEE-754 double arithmetic, this can # never return 0.0 (asserted by Tim; proof too long for a comment). return (x/30269.0 + y/30307.0 + z/30323.0) % 1.0 def getstate(self): """Return internal state; can be passed to setstate() later.""" return self.VERSION, self._seed, self.gauss_next def setstate(self, state): """Restore internal state from object returned by getstate().""" version = state[0] if version == 1: version, self._seed, self.gauss_next = state else: raise ValueError("state with version %s passed to " "Random.setstate() of version %s" % (version, self.VERSION)) def jumpahead(self, n): """Act as if n calls to random() were made, but quickly. n is an int, greater than or equal to 0. Example use: If you have 2 threads and know that each will consume no more than a million random numbers, create two Random objects r1 and r2, then do r2.setstate(r1.getstate()) r2.jumpahead(1000000) Then r1 and r2 will use guaranteed-disjoint segments of the full period. """ if not n >= 0: raise ValueError("n must be >= 0") x, y, z = self._seed x = int(x * pow(171, n, 30269)) % 30269 y = int(y * pow(172, n, 30307)) % 30307 z = int(z * pow(170, n, 30323)) % 30323 self._seed = x, y, z def __whseed(self, x=0, y=0, z=0): """Set the Wichmann-Hill seed from (x, y, z). These must be integers in the range [0, 256). """ if not type(x) == type(y) == type(z) == int: raise TypeError('seeds must be integers') if not (0 <= x < 256 and 0 <= y < 256 and 0 <= z < 256): raise ValueError('seeds must be in range(0, 256)') if 0 == x == y == z: # Initialize from current time import time t = long(time.time() * 256) t = int((t&0xffffff) ^ (t>>24)) t, x = divmod(t, 256) t, y = divmod(t, 256) t, z = divmod(t, 256) # Zero is a poor seed, so substitute 1 self._seed = (x or 1, y or 1, z or 1) self.gauss_next = None def whseed(self, a=None): """Seed from hashable object's hash code. None or no argument seeds from current time. It is not guaranteed that objects with distinct hash codes lead to distinct internal states. This is obsolete, provided for compatibility with the seed routine used prior to Python 2.1. Use the .seed() method instead. """ if a is None: self.__whseed() return a = hash(a) a, x = divmod(a, 256) a, y = divmod(a, 256) a, z = divmod(a, 256) x = (x + a) % 256 or 1 y = (y + a) % 256 or 1 z = (z + a) % 256 or 1 self.__whseed(x, y, z) ## --------------- Operating System Random Source ------------------ class SystemRandom(Random): """Alternate random number generator using sources provided by the operating system (such as /dev/urandom on Unix or CryptGenRandom on Windows). Not available on all systems (see os.urandom() for details). """ def random(self): """Get the next random number in the range [0.0, 1.0).""" return (long(_hexlify(_urandom(7)), 16) >> 3) * RECIP_BPF def getrandbits(self, k): """getrandbits(k) -> x. Generates a long int with k random bits.""" if k <= 0: raise ValueError('number of bits must be greater than zero') if k != int(k): raise TypeError('number of bits should be an integer') bytes = (k + 7) // 8 # bits / 8 and rounded up x = long(_hexlify(_urandom(bytes)), 16) return x >> (bytes * 8 - k) # trim excess bits def _stub(self, *args, **kwds): "Stub method. Not used for a system random number generator." return None seed = jumpahead = _stub def _notimplemented(self, *args, **kwds): "Method should not be called for a system random number generator." raise NotImplementedError('System entropy source does not have state.') getstate = setstate = _notimplemented ## -------------------- test program -------------------- def _test_generator(n, func, args): import time print n, 'times', func.__name__ total = 0.0 sqsum = 0.0 smallest = 1e10 largest = -1e10 t0 = time.time() for i in range(n): x = func(*args) total += x sqsum = sqsum + x*x smallest = min(x, smallest) largest = max(x, largest) t1 = time.time() print round(t1-t0, 3), 'sec,', avg = total/n stddev = _sqrt(sqsum/n - avg*avg) print 'avg %g, stddev %g, min %g, max %g' % \ (avg, stddev, smallest, largest) def _test(N=2000): _test_generator(N, random, ()) _test_generator(N, normalvariate, (0.0, 1.0)) _test_generator(N, lognormvariate, (0.0, 1.0)) _test_generator(N, vonmisesvariate, (0.0, 1.0)) _test_generator(N, gammavariate, (0.01, 1.0)) _test_generator(N, gammavariate, (0.1, 1.0)) _test_generator(N, gammavariate, (0.1, 2.0)) _test_generator(N, gammavariate, (0.5, 1.0)) _test_generator(N, gammavariate, (0.9, 1.0)) _test_generator(N, gammavariate, (1.0, 1.0)) _test_generator(N, gammavariate, (2.0, 1.0)) _test_generator(N, gammavariate, (20.0, 1.0)) _test_generator(N, gammavariate, (200.0, 1.0)) _test_generator(N, gauss, (0.0, 1.0)) _test_generator(N, betavariate, (3.0, 3.0)) _test_generator(N, triangular, (0.0, 1.0, 1.0/3.0)) # Create one instance, seeded from current time, and export its methods # as module-level functions. The functions share state across all uses #(both in the user's code and in the Python libraries), but that's fine # for most programs and is easier for the casual user than making them # instantiate their own Random() instance. _inst = Random() seed = _inst.seed random = _inst.random uniform = _inst.uniform triangular = _inst.triangular randint = _inst.randint choice = _inst.choice randrange = _inst.randrange sample = _inst.sample shuffle = _inst.shuffle normalvariate = _inst.normalvariate lognormvariate = _inst.lognormvariate expovariate = _inst.expovariate vonmisesvariate = _inst.vonmisesvariate gammavariate = _inst.gammavariate gauss = _inst.gauss betavariate = _inst.betavariate paretovariate = _inst.paretovariate weibullvariate = _inst.weibullvariate getstate = _inst.getstate setstate = _inst.setstate jumpahead = _inst.jumpahead getrandbits = _inst.getrandbits if __name__ == '__main__': _test()
Save