Based on those assumptions, which I'll iterate below first, let's get the numbers:
1) hiring based on IQ, cutoff at 2 standard deviations above the global mean (mu = 100, sigma = 15, by design), 2 sigma above that makes 130. You get hired if you're the candidate with the highest IQ, if you satisfy the minimum of an IQ of 130
2) 8/20 hispanic, 8/20 white, 1.16/20 black, 2.6/20 asians (and let's just pretned that sums to 100%). Or: 40% hispanic, 40% white, 5.8% black, 13% asian
3) let's assume 1000 candidates for each position.
So each round has 1000 candidates:
400 hispanics, IQ taken from N(90, 15)
400 whites, IQ taken from N(100, 15)
58 black, IQ taken from N(85, 15)
130 asians, IQ taken from N(105, 15)
The numbers:
33.42% Asians, 10.85% Hispanic, 0.54% Black, 55.20% White
Odds of getting hired under those criteria:
0.25% Asians, 0.02% Hispanics, 0.01% Black, 0.13% White
And that's why nobody's going to be happy with expected outcomes. Just imagine the (completely "fair") news headline "Asians 25 TIMES more likely to get hired than blacks in the bay area".
import random
counts = {'h': 0, 'w': 0, 'b': 0, 'a': 0, None: 0}
experiments = 10000
for x in range(experiments):
candidates = []
for h in range(400):
iq = random.normalvariate(90, 15)
candidates.append((iq, 'h'))
for w in range(400):
iq = random.normalvariate(100, 15)
candidates.append((iq, 'w'))
for b in range(58):
iq = random.normalvariate(85, 15)
candidates.append((iq, 'b'))
for a in range(130):
iq = random.normalvariate(105, 15)
candidates.append((iq, 'a'))
# filter iq > 130
candidates = [(iq, typ) for (iq, typ) in candidates if iq > 130]
if candidates:
selected = sorted(candidates, key=lambda (x,y):x)[0][1]
else:
selected = None
counts[selected] += 1
total = sum(counts.values())
print total
for k, v in counts.items():
print "%s %2.2f" % (k, 100.0 * v/total)
print "odds of hire if hispanic : %2.4f%%" % (100.0*counts['h']/experiments / 400)
print "odds of hire if white : %2.4f%%" % (100.0*counts['w']/experiments / 400)
print "odds of hire if black : %2.4f%%" % (100.0*counts['b']/experiments / 58)
print "odds of hire if asian : %2.4f%%" % (100.0*counts['a']/experiments / 130)
print "odds of no hire at all: %2.4f%%" % (100.0*counts[None]/experiments)