|
|
1.1 ! root 1: static char Sccsid[] = "af.c @(#)af.c 1.1 10/1/82 Berkeley "; ! 2: #include "apl.h" ! 3: ! 4: #ifdef vax ! 5: #define MAXRAND 2147483648. ! 6: #else ! 7: #define MAXRAND 32768. ! 8: #endif ! 9: ! 10: ex_deal() ! 11: { ! 12: register struct item *p; ! 13: register m, n; ! 14: double f; ! 15: data d1, d2; ! 16: ! 17: m = topfix(); ! 18: n = topfix(); ! 19: if(m < 0 || m > n) ! 20: error("deal D"); ! 21: p = newdat(DA, 1, m); ! 22: datum = thread.iorg; ! 23: for(; n!=0; n--) { ! 24: f = m; ! 25: f /= n; ! 26: if(rand()/MAXRAND < f) { ! 27: putdat(p, datum); ! 28: m--; ! 29: } ! 30: datum += one; ! 31: } ! 32: m = p->size; ! 33: while(m > 0) { ! 34: f = rand()/MAXRAND; ! 35: n = m * f; ! 36: m--; ! 37: if(n != m) { ! 38: p->index = n; ! 39: d1 = getdat(p); ! 40: p->index = m; ! 41: d2 = getdat(p); ! 42: p->index = n; ! 43: putdat(p, d2); ! 44: p->index = m; ! 45: putdat(p, d1); ! 46: } ! 47: } ! 48: *sp++ = p; ! 49: } ! 50: ! 51: data ! 52: ex_rand(d) ! 53: data d; ! 54: { ! 55: double f; ! 56: ! 57: f = (rand()/MAXRAND) * d; ! 58: d = floor(f) + thread.iorg; ! 59: return(d); ! 60: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.