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: }
Defined functions
Defined variables
Sccsid
defined in line
1;
never used
Defined macros