3

So I have a data science interview at Google, and I'm trying to prepare. One of the questions I see a lot (on Glassdoor) from people who have interviewed there before has been: "Write code to generate random normal distribution." While this is easy to do using numpy, I know sometimes Google asks the candidate to code without using any packages or libraries, so basically from scratch.

Any ideas?

Kelsey
  • 371
  • 4
  • 17
  • Does this answer your question? [Converting a Uniform Distribution to a Normal Distribution](https://stackoverflow.com/questions/75677/converting-a-uniform-distribution-to-a-normal-distribution) – fsl Jan 20 '22 at 04:24
  • You must check the normal distribution theory. Because you need calculated some variables, with the froms of theory. – David Tapias Jan 20 '22 at 04:26

1 Answers1

3

According to the Central Limit Theorem a normalised summation of independent random variables will approach a normal distribution. The simplest demonstration of this is adding two dice together.

So maybe something like:

import random
import matplotlib.pyplot as plt

def pseudo_norm():
    """Generate a value between 1-100 in a normal distribution"""
    count = 10
    values =  sum([random.randint(1, 100) for x in range(count)])
    return round(values/count)
    
dist = [pseudo_norm() for x in range(10_000)]
n_bins = 100
fig, ax = plt.subplots()
ax.set_title('Pseudo-normal')
hist = ax.hist(dist, bins=n_bins)
plt.show()

Which generates something like: Pseudo-normal generated sample

import random
  • 2,216
  • 1
  • 14
  • 16