โ† Back to list

๐ŸŽฒ Simulating Reality: How I Used Uniform and Normal Distributions to Make Data-Driven Decisions

Ever wondered how to make smart decisions when data is limited or hard to collect? Welcome to the world of simulationโ€Šโ€”โ€Ša technique thatโ€ฆ

Chauhanritika ยท 2025-09-10 06:21 ยท 50 claps ยท 2.7 min read paywalled
#data-analysis #data-driven #statistics #normal-distribution #uniform-distribution
Open on Medium โ†—
Wiki topics: ๐Ÿ“ ยท Mathematics

๐ŸŽฒ Simulating Reality: How I Used Uniform and Normal Distributions to Make Data-Driven Decisions

Ever wondered how to make smart decisions when data is limited or hard to collect? Welcome to the world of simulation โ€” a technique that helped me (and can help you) turn uncertainty into insight using nothing but Python and a few well-chosen assumptions.

๐Ÿ’ก Why Simulations Matter in Real Life

A few months ago, I was helping an online jewelry retailer who wanted to experiment with dynamic pricing strategies. Think random discounts, limited-time offers, tiered pricing โ€” cool ideas, right?

But there was a catch.

Jewelry is expensive. People donโ€™t buy diamonds every day. And customer data was scarce.

So the question became: How can we test pricing strategies before risking revenue on a real-world experiment?

The answer: Simulation.

๐Ÿงช What is a Simulation in Data Analytics?

In data analytics, simulation means:

  • Mimicking real-world scenarios
  • Using statistical distributions
  • To generate synthetic data that models potential outcomes

Instead of relying only on existing (or nonexistent) data, you can create random samples based on known parameters like mean, range, or standard deviation.

Let me show you how I did this using two types of distributions:

  • Uniform Distribution
  • Normal Distribution

๐Ÿ›’ Scenario 1: Simulating Random Discount Offers (Uniform Distribution)

Problem: The retailer wanted to give customers random discounts between 0% and 10% and assess how this might affect purchase behavior.

But with only a small dataset of past purchases, we couldnโ€™t draw any reliable conclusions.

โœ… Step 1: Simulate 1,000 Random Discounts

import numpy as np

n = 1000  # sample size
sample = np.random.uniform(low=0, high=0.1, size=n)  # 0% to 10%

โœ… Step 2: Visualize the Distribution

import seaborn as sns
import matplotlib.pyplot as plt

sns.histplot(sample, bins=20)
plt.title("Simulated Uniform Discount Distribution")
plt.xlabel("Discount")
plt.ylabel("Frequency")
plt.show()

๐Ÿง  Expect a flat histogram โ€” every discount % is equally likely.

โœ… Step 3: Calculate Confidence Interval for the Mean

from scipy import stats

x_bar = sample.mean()
s = sample.std()
sem = s / np.sqrt(n)

interval = stats.norm.interval(0.95, loc=x_bar, scale=sem)
print(f"95% CI: {interval}")

๐Ÿ“Œ Since we generated values between 0 and 0.1, the true population mean is 0.05.

๐Ÿ” Step 4: Repeat Simulation 100 Times

count_contains = 0

for _ in range(100):
    sample = np.random.uniform(0, 0.1, 1000)
    x_bar = sample.mean()
    s = sample.std()
    sem = s / np.sqrt(1000)
    interval = stats.norm.interval(0.95, loc=x_bar, scale=sem)

    if interval[0] <= 0.05 <= interval[1]:
        count_contains += 1

print(f"Captured 0.05 in {count_contains} out of 100 simulations.")

๐Ÿ’ก Expected Output: Around 95/100 intervals should contain the true mean 0.05.

๐Ÿ’Ž Scenario 2: Simulating Customer Spending Behavior (Normal Distribution)

Next, the retailer wanted to predict how much customers might spend under the new discount strategy.

They estimated:

  • Average spending = $1,000
  • Standard deviation = $200

โœ… Step 1: Simulate Spending Data

spending = np.random.normal(loc=1000, scale=200, size=1000)

โœ… Step 2: Visualize the Normal Distribution

sns.histplot(spending, bins=30, kde=True)
plt.title("Simulated Customer Spending Distribution")
plt.xlabel("Amount ($)")
plt.ylabel("Frequency")
plt.show()

This shows a bell-shaped curve centered around $1,000.

โœ… Step 3: Confidence Interval for Mean Spending

x_bar = spending.mean()
s = spending.std()
sem = s / np.sqrt(len(spending))

interval = stats.norm.interval(0.95, loc=x_bar, scale=sem)
print(f"Estimated average spending: ${x_bar:.2f}")
print(f"95% CI: {interval}")

๐Ÿง  Final Thoughts: Why You Should Care

Simulations are more than just math magic. Theyโ€™re tools for:

  • Testing assumptions
  • Making better decisions
  • Visualizing uncertainty
  • Telling compelling data stories

You donโ€™t always need โ€œbig dataโ€ to make smart moves. Sometimes, a good simulation is your best friend.

๐Ÿ’ฌ Your Turn

Have you tried simulations in your data work? Would you use them to support decision-making?

Let me know in the comments โ€” or better yet, run one yourself and see the magic unfold. โœจ


๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
post_id
e8dcc7d77104
slug
simulating-reality-how-i-used-uniform-and-normal-distributions-to-make-data-driven-decisions-e8dcc7d77104
url
https://medium.com/@chauhanritika577/simulating-reality-how-i-used-uniform-and-normal-distributions-to-make-data-driven-decisions-e8dcc7d77104
canonical_url
https://medium.com/@chauhanritika577/simulating-reality-how-i-used-uniform-and-normal-distributions-to-make-data-driven-decisions-e8dcc7d77104
author_url
https://medium.com/@chauhanritika577
status
ok
fetched_at
2026-08-09 23:39:41