|
|
1.1 ! root 1: #include "apl.h" ! 2: ! 3: ex_deal() ! 4: { ! 5: register struct item *p; ! 6: register m, n; ! 7: double f; ! 8: data d1, d2; ! 9: ! 10: m = topfix(); ! 11: n = topfix(); ! 12: if(m < 0 || m > n) ! 13: error("deal D"); ! 14: p = newdat(DA, 1, m); ! 15: datum = thread.iorg; ! 16: for(; n!=0; n--) { ! 17: f = m; ! 18: f /= n; ! 19: if(rand()/(32768.*32768.*2.) < f) { ! 20: putdat(p, datum); ! 21: m--; ! 22: } ! 23: datum += one; ! 24: } ! 25: m = p->size; ! 26: while(m > 0) { ! 27: f = rand()/(32768.*32768.*2.); ! 28: n = m * f; ! 29: m--; ! 30: if(n != m) { ! 31: p->index = n; ! 32: d1 = getdat(p); ! 33: p->index = m; ! 34: d2 = getdat(p); ! 35: p->index = n; ! 36: putdat(p, d2); ! 37: p->index = m; ! 38: putdat(p, d1); ! 39: } ! 40: } ! 41: push(p); ! 42: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.