Skip to content

Instantly share code, notes, and snippets.

@Grandmother
Last active June 9, 2020 13:57
Show Gist options
  • Save Grandmother/939faa15687ba92ed4836ffebdb5313f to your computer and use it in GitHub Desktop.
Save Grandmother/939faa15687ba92ed4836ffebdb5313f to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
from collections import Counter
from random import randint
def gen_propotional(array, amount):
weighted_array = []
for i in array:
weighted_array += [i] * i
for i in range(amount):
yield weighted_array[randint(0, len(weighted_array) - 1)]
def main():
array = [1, 2, 6]
s = float(sum(array))
probs = [v/s for v in array]
amount = 10000000
cnt = Counter()
for i in gen_propotional(array, amount):
cnt[i] += 1
print("Value\tGT:Generated")
for i, v in enumerate(array):
print("{}\t\t{:8.7f}:{:8.7f}".format(v, probs[i], cnt[v] / float(amount)))
if __name__ == "__main__":
main()
#!/usr/bin/env python3
from collections import Counter
from random import randint
def gen_propotional(array, amount):
min_element = min(array)
weighted_array = []
for i in array:
how_many = i / min_element
weighted_array += [i] * how_many
for i in range(amount):
yield weighted_array[randint(0, len(weighted_array) - 1)]
def main():
array = [1, 2, 600]
s = float(sum(array))
probs = [v/s for v in array]
amount = 1000000
cnt = Counter()
for i in gen_propotional(array, amount):
cnt[i] += 1
print("Value\tGT:Generated")
for i, v in enumerate(array):
print("{}\t\t{:8.7f}:{:8.7f}".format(v, probs[i], cnt[v] / float(amount)))
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment