function add(a,key,val, i) { i = ++a[0]; a[i] = key; a[-1*i] = val a["+"] += val } function sample(a, sum,r,max,i) { r = rand(); max = a[0]; sum = a["+"]; for(i=1; i<=max; i++) if (a[-1*i]/sum > r) return i } function sampleDemo( a,n) { n=20; add(a,"mon",2) add(a,"tue",4) add(a,"wed",8) add(a,"thu",1) add(a,"fri",1) saya("a1",a); while(n--) print a[sample(a)] saya("a2",a); }