The area from 270 and higher (chance of Obama win) is 0.977

The histogram can be reproduced with the following python program:

```# Author places this work in the public domain.
import numpy as np
try: import ROOT as r
except: r=None

# state-by-state probabilities of Obama win from November 4, 2012 (http://fivethirtyeight.blogs.nytimes.com)
state_electorsP = {'AL' : ( 9, 0.000),     'ME' : ( 2, 1.000),     'NC' : (15, 0.213),
'AK' : ( 3, 0.001),     'ME1': ( 1, 0.999),     'ND' : ( 3, 0.001),
'AZ' : (11, 0.033),     'ME2': ( 1, 0.900),     'OH' : (18, 0.850),
'AR' : ( 6, 0.000),     'MD' : (10, 1.000),     'OK' : ( 7, 0.000),
'CA' : (55, 1.000),     'MA' : (11, 1.000),     'OR' : ( 7, 0.989),
'CO' : ( 9, 0.681),     'MI' : (16, 0.988),     'PA' : (20, 0.966),
'CT' : ( 7, 0.999),     'MN' : (10, 0.991),     'RI' : ( 4, 1.000),
'DE' : ( 3, 0.998),     'MS' : ( 6, 0.000),     'SC' : ( 9, 0.004),
'DC' : ( 3, 1.000),     'MO' : (10, 0.007),     'SD' : ( 3, 0.005),
'FL' : (29, 0.462),     'MT' : ( 3, 0.020),     'TN' : (11, 0.000),
'GA' : (16, 0.002),     'NE' : ( 2, 0.000),     'TX' : (38, 0.000),
'HI' : ( 4, 1.000),     'NE1': ( 1, 0.005),     'UT' : ( 6, 0.000),
'ID' : ( 4, 0.000),     'NE2': ( 1, 0.133),     'VT' : ( 3, 1.000),
'IL' : (20, 1.000),     'NE3': ( 1, 0.000),     'VA' : (13, 0.710),
'IN' : (11, 0.002),     'NV' : ( 6, 0.895),     'WA' : (12, 0.999),
'IA' : ( 6, 0.831),     'NH' : ( 4, 0.794),     'WV' : ( 5, 0.001),
'KS' : ( 6, 0.001),     'NJ' : (14, 0.998),     'WI' : (10, 0.942),
'KY' : ( 8, 0.000),     'NM' : ( 5, 0.992),     'WY' : ( 3, 0.000),
'LA' : ( 8, 0.000),     'NY' : (29, 1.000),
}

def elector_pdist(ep_pairs) :
'''Recursive construction of electoral probability distribution (no correlations).

With no states, there are zero electors with 100% probability (edge condition);
otherwise, the probability distribution is
* the probability distribution of winning the first state, plus
* the probability distribution of losing the first state.
'''
if not ep_pairs :
return [1.0]
electors,p = ep_pairs[0]
sub = elector_pdist(ep_pairs[1:])
return ( np.concatenate( [pad,sub] ) * p +     # win  (shifted up by #electors won)
np.concatenate( [sub,pad] ) * (1-p) ) # lose (unshifted)

def printText(pdist) :
print "\n%sP(Obama Electors)%s"%(2*('='*50,))
for e,p in enumerate(pdist) :
if not p : continue
i = int(p*1000)
thr = [(4,'.'),(3,':'),(2,'|'),(1,')'),(0,'>')]
cap = next(c for t,c in thr if p*1000-i < 10**(-t))
print  ('%3d  %s%s'%(e,i*'-',cap)).ljust(80), "%.1e"%p
print '='*100

def printROOT(pdist) :
r.gStyle.SetOptStat('nemi')
c = r.TCanvas()
hist = r.TH1D('p_electors','P(Obama Electors);Obama Electors;',len(pdist),-0.5,len(pdist)-0.05)
win = hist.Clone('p_electors_270+')
win.SetFillColor(r.kBlue)
for e,p in enumerate(pdist) :
hist.SetBinContent(e+1,p)
if e>269 : win.SetBinContent(e+1,p)
hist.Draw('hist'); c.Update()
ps1 = hist.GetListOfFunctions().FindObject("stats")
win.Draw("sames"); c.Update()
ps2 = win.GetListOfFunctions().FindObject("stats")
ps2.SetTextColor(r.kBlue)
ps2.SetY1NDC(0.60)
ps2.SetY2NDC(0.75);
raw_input()

if __name__=='__main__' :
'''Print probabilty distribution of Obama electors and probability of Obama win.'''
p_dist = elector_pdist( state_electorsP.values() )
items = ['sum(e for e,p in state_electorsP.values())', # expect 538
'sum(p_dist)',                                # expect 1.0
'sum(p_dist[270:])'                           # Probability of Obama win
]
for item in items : print item.ljust(len(max(items,key=len))), ':', '%.3f'%eval(item)
print

if r : printROOT(p_dist)
else : printText(p_dist)
```