

from typing import List, Dict
from collections import Counter
import math

import matplotlib.pyplot as plt

import random
from scratch.probability import inverse_normal_cdf


random.seed(0)

def random_normal() -> float:
    """Returns a random draw from a standard normal distribution"""
    return inverse_normal_cdf(random.random())

xs = [random_normal() for _ in range(1000)]
ys1 = [ x + random_normal() / 2 for x in xs]
ys2 = [-x + random_normal() / 2 for x in xs]


plt.scatter(xs, ys1, marker='.', color='black', label='ys1')
plt.scatter(xs, ys2, marker='.', color='gray',  label='ys2')
plt.xlabel('xs')
plt.ylabel('ys')
plt.legend(loc=9)
plt.title("Very Different Joint Distributions")

plt.savefig('scatter-plot.png')		# SAVE first before show() !!!
plt.show()
plt.gca().clear()


from scratch.statistics import correlation

print(correlation(xs, ys1))
print(correlation(xs, ys2))
print(correlation(ys1, ys2))



