Skip to content

Instantly share code, notes, and snippets.

@farooqkz
Created December 27, 2017 15:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save farooqkz/104a7c6600db8368753ca4636cefb67d to your computer and use it in GitHub Desktop.
Save farooqkz/104a7c6600db8368753ca4636cefb67d to your computer and use it in GitHub Desktop.
-
#!/usr/bin/python3.5
# Hi, I am a program who select a random element from S n times.
# you should specify n via m234.py n
# My father is Farooq KZ
# You can contact him at farooghkarimizadeh@gmail.com
# Also I'm under MIT/X11 licence
import os # I want it for os.urandom
import sys # I want it for sys.argv and sys.exit
def get_random(high):
"""
This function returns a random integer between 0 and high-1
"""
random_bytes = os.urandom(int(high.bit_length()/8) + 1)
random_int = int(random_bytes.hex(), 16)
return random_int % high
if len(sys.argv) != 2 or "-h" in sys.argv:
print("Usage:", sys.argv[0],"n")
sys.exit()
n = int(sys.argv[1]) # How many times whould I test?
S = [("r", "g")] * 8 + [("r", "r")] * 2 # S like Sample Space!
# Also r like red and g like green
while [] in S:
S.remove([])
print("S =",S)
r = 0 # How many times a card was chosen which both of its side was Red?
g = 0
for _ in range(n):
# Choose a card
c = S[get_random(len(S))]
# the other side is red or green?
if c[1] == "r":
r += 1
elif c[1] == "g":
g += 1
print("Total", n, "tries. Red:", r,"Green:",g)
print("% of Green:", (g/n)*100)
print("% of Red:", (r/n)*100)
@farooqkz
Copy link
Author

[18:45:10]:~/py$ ./m234.py 10
S = [('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'r'), ('r', 'r')]
Total 10 tries. Red: 1 Green: 9
% of Green: 90.0
% of Red: 10.0
[18:45:10]:~/py$ ./m234.py 100
S = [('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'r'), ('r', 'r')]
Total 100 tries. Red: 22 Green: 78
% of Green: 78.0
% of Red: 22.0
[18:45:12]:~/py$ ./m234.py 1000
S = [('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'r'), ('r', 'r')]
Total 1000 tries. Red: 210 Green: 790
% of Green: 79.0
% of Red: 21.0
[18:45:16]:~/py$ ./m234.py 1000
S = [('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'r'), ('r', 'r')]
Total 1000 tries. Red: 180 Green: 820
% of Green: 82.0
% of Red: 18.0
[18:45:17]:~/py$ ./m234.py 1000
S = [('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'r'), ('r', 'r')]
Total 1000 tries. Red: 162 Green: 838
% of Green: 83.8
% of Red: 16.2
[18:45:18]:~/py$ ./m234.py 100000
S = [('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'r'), ('r', 'r')]
Total 100000 tries. Red: 19658 Green: 80342
% of Green: 80.342
% of Red: 19.658
[18:45:22]:~/py$ ./m234.py 100000
S = [('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'r'), ('r', 'r')]
Total 100000 tries. Red: 19713 Green: 80287
% of Green: 80.28699999999999
% of Red: 19.713
[18:45:25]:~/py$ ./m234.py 1000000
S = [('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'g'), ('r', 'r'), ('r', 'r')]
Total 1000000 tries. Red: 195061 Green: 804939
% of Green: 80.4939
% of Red: 19.5061

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment