BSD 4_3 release
[unix-history] / usr / contrib / apl / src / af.c
static char Sccsid[] = "af.c @(#)af.c 1.1 10/1/82 Berkeley ";
#include "apl.h"
#ifdef vax
#define MAXRAND 2147483648.
#else
#define MAXRAND 32768.
#endif
ex_deal()
{
register struct item *p;
register m, n;
double f;
data d1, d2;
m = topfix();
n = topfix();
if(m < 0 || m > n)
error("deal D");
p = newdat(DA, 1, m);
datum = thread.iorg;
for(; n!=0; n--) {
f = m;
f /= n;
if(rand()/MAXRAND < f) {
putdat(p, datum);
m--;
}
datum += one;
}
m = p->size;
while(m > 0) {
f = rand()/MAXRAND;
n = m * f;
m--;
if(n != m) {
p->index = n;
d1 = getdat(p);
p->index = m;
d2 = getdat(p);
p->index = n;
putdat(p, d2);
p->index = m;
putdat(p, d1);
}
}
*sp++ = p;
}
data
ex_rand(d)
data d;
{
double f;
f = (rand()/MAXRAND) * d;
d = floor(f) + thread.iorg;
return(d);
}