Annotation of 43BSD/contrib/apl/src/af.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.