I hacked a counter before noticing Excavating had already done so. Since my result differs slightly from his, I may as well post it. I used this Wikipedia page for the demographic breakouts, but adjusted numbers to add to 100%.
I’ll include the date table I extracted from the Wiki in case someone else wants to use it. I may as well include the source code as well.
[SPOILER]char *Ethname = {
“White”, “Latin”, “Black”, “Nativ”, “Asian”, “Pacif”, “Mixed”,
};
struct stademog {
char *sd_name;
int sd_dev, sd_rev;
double sd_ethn[7];
int sd_pop;
} Statd[51] = {
“Alabama”, 0, 9, 67.0, 3.9, 26.2, 0.6, 1.1, 0.1, 1.5, 4822023,
“Alaska”, 0, 3, 64.1, 5.5, 3.3, 14.8, 5.4, 1.0, 7.3, 731449,
“Arizona”, 0, 11, 57.8, 29.6, 4.1, 4.6, 2.8, 0.2, 3.4, 6553255,
“Arkansas”, 0, 6, 74.5, 6.4, 15.4, 0.8, 1.2, 0.2, 2.0, 2949131,
“California”, 55, 0, 40.1, 37.6, 6.2, 1.0, 13.0, 0.4, 4.9, 38041430,
“Colorado”, 9, 0, 70.0, 20.7, 4.0, 1.1, 2.8, 0.1, 3.4, 5187582,
“Connecticut”, 7, 0, 71.2, 13.4, 10.1, 0.3, 3.8, 0.0, 2.6, 3590347,
“Delaware”, 3, 0, 65.3, 8.2, 21.4, 0.5, 3.2, 0.0, 2.7, 917092,
“DistCol”, 3, 0, 34.8, 9.1, 50.7, 0.3, 3.5, 0.1, 2.9, 632323,
“Florida”, 29, 0, 57.9, 22.5, 16.0, 0.4, 2.4, 0.1, 2.5, 19317568,
“Georgia”, 0, 16, 55.9, 8.8, 30.5, 0.3, 3.2, 0.1, 2.1, 9919945,
“Hawaii”, 4, 0, 22.7, 8.9, 1.6, 0.3, 38.6, 10.0, 23.6, 1392313,
“Idaho”, 0, 4, 84.0, 11.2, 0.6, 1.4, 1.2, 0.1, 2.5, 1595728,
“Illinois”, 20, 0, 63.7, 15.8, 14.5, 0.3, 4.6, 0.0, 2.3, 12875255,
“Indiana”, 0, 11, 81.5, 6.0, 9.1, 0.3, 1.6, 0.0, 2.0, 6537334,
“Iowa”, 6, 0, 88.7, 5.0, 2.9, 0.4, 1.7, 0.1, 1.8, 3074186,
“Kansas”, 0, 6, 78.2, 10.5, 5.9, 1.0, 2.4, 0.1, 3.0, 2885905,
“Kentucky”, 0, 8, 86.3, 3.1, 7.8, 0.2, 1.1, 0.1, 1.7, 4380415,
“Louisiana”, 0, 8, 60.3, 4.2, 32.0, 0.7, 1.5, 0.0, 1.6, 4601893,
“Maine”, 4, 0, 94.4, 1.3, 1.2, 0.6, 1.0, 0.0, 1.6, 1329192,
“Maryland”, 10, 0, 54.7, 8.2, 29.4, 0.4, 5.5, 0.1, 2.9, 5884563,
“Massachusetts”, 11, 0, 76.1, 9.6, 6.6, 0.3, 5.3, 0.0, 2.6, 6646144,
“Michigan”, 16, 0, 76.6, 4.4, 14.2, 0.6, 2.4, 0.0, 2.3, 9883360,
“Minnesota”, 10, 0, 83.1, 4.7, 5.2, 1.1, 4.0, 0.0, 2.4, 5379139,
“Mississippi”, 0, 6, 58.0, 2.7, 37.0, 0.5, 0.9, 0.0, 1.1, 2984926,
“Missouri”, 0, 10, 81.0, 3.5, 11.6, 0.5, 1.6, 0.1, 2.1, 6021988,
“Montana”, 0, 3, 87.8, 2.9, 0.4, 6.3, 0.6, 0.1, 2.5, 1005141,
“Nebraska”, 0, 5, 82.1, 9.2, 4.5, 1.0, 1.8, 0.1, 2.2, 1855525,
“Nevada”, 6, 0, 54.1, 26.5, 8.1, 1.2, 7.2, 0.6, 4.7, 2758931,
“New_Hampshire”, 4, 0, 92.3, 2.8, 1.1, 0.2, 2.2, 0.0, 1.6, 1320718,
“New_Jersey”, 14, 0, 59.3, 17.7, 13.7, 0.3, 8.3, 0.0, 2.7, 8864590,
“New_Mexico”, 5, 0, 40.5, 46.3, 2.1, 9.4, 1.4, 0.1, 3.7, 2085538,
“New_York”, 29, 0, 58.3, 17.6, 15.9, 0.6, 7.3, 0.0, 3.0, 19570261,
“North_Carolina”, 0, 15, 65.3, 8.4, 21.5, 1.3, 2.2, 0.1, 2.2, 9656401,
“North_Dakota”, 0, 3, 88.9, 2.0, 1.2, 5.4, 1.0, 0.0, 1.8, 699628,
“Ohio”, 18, 0, 81.1, 3.1, 12.2, 0.2, 1.7, 0.0, 2.1, 11544225,
“Oklahoma”, 0, 7, 68.7, 8.9, 7.4, 8.6, 1.7, 0.1, 5.9, 3814820,
“Oregon”, 7, 0, 78.5, 11.7, 1.8, 1.4, 3.7, 0.3, 3.8, 3899353,
“Pennsylvania”, 20, 0, 79.5, 5.7, 10.8, 0.2, 2.7, 0.0, 1.9, 12763536,
“Rhode_Island”, 4, 0, 76.4, 12.4, 5.7, 0.6, 2.9, 0.1, 3.3, 1050292,
“South_Carolina”, 0, 9, 64.1, 5.1, 27.9, 0.4, 1.3, 0.1, 1.7, 4723723,
“South_Dakota”, 0, 3, 84.7, 2.7, 1.3, 8.8, 0.9, 0.0, 2.1, 833354,
“Tennessee”, 0, 11, 75.6, 4.6, 16.7, 0.3, 1.4, 0.1, 1.7, 6456243,
“Texas”, 0, 38, 45.3, 37.6, 11.8, 0.7, 3.8, 0.1, 2.7, 26059203,
“Utah”, 0, 6, 80.4, 13.0, 1.1, 1.2, 2.0, 0.9, 2.7, 2855287,
“Vermont”, 3, 0, 94.3, 1.5, 1.0, 0.4, 1.3, 0.0, 1.7, 626011,
“Virginia”, 13, 0, 64.8, 7.9, 19.4, 0.4, 5.5, 0.1, 2.9, 8185867,
“Washington”, 12, 0, 72.5, 11.2, 3.6, 1.5, 7.2, 0.6, 4.7, 6897012,
“West_Virginia”, 0, 5, 93.2, 1.2, 3.4, 0.2, 0.7, 0.0, 1.5, 1855413,
“Wisconsin”, 10, 0, 83.3, 5.9, 6.3, 1.0, 2.3, 0.0, 1.8, 5726386,
“Wyoming”, 0, 3, 85.9, 8.9, 0.8, 2.4, 0.8, 0.1, 2.2, 576412,
};
int main(int argc, char **argv)
{
int eix, stix, evtot, tpop;
double dpp, eprop, pprop;
for (tpop = evtot = stix = 0; stix < 51; stix++) {
tpop += Statd[stix].sd_pop;
Statd[stix].sd_dev += Statd[stix].sd_rev;
for (dpp = eix = 0; eix < 7; eix++)
dpp += Statd[stix].sd_ethn[eix];
for (eix = 0; eix < 7; eix++)
Statd[stix].sd_ethn[eix] /= dpp;
evtot += Statd[stix].sd_dev;
}
for (eix = 0; eix < 7; eix++) {
for (eprop = pprop = stix = 0; stix < 51; stix++) {
eprop += Statd[stix].sd_ethn[eix] * Statd[stix].sd_dev;
pprop += Statd[stix].sd_ethn[eix] * Statd[stix].sd_pop;
}
printf("%s have %4.2f%% of pop and %4.2f%% of ev
",
Ethname[eix], 100 * pprop / tpop, 100 * eprop / 538);
}
exit(0);
}[/SPOILER]Here’s what that program printed:
White have 62.84% of pop and 64.23% of ev
Latin have 16.08% of pop and 15.00% of ev
Black have 12.45% of pop and 12.16% of ev
Nativ have 0.94% of pop and 1.07% of ev
Asian have 4.65% of pop and 4.45% of ev
Pacif have 0.17% of pop and 0.20% of ev
Mixed have 2.87% of pop and 2.90% of ev