#include "platform.h"#include "mp.h" mpint *mprand(int bits, void (*gen)(u8int*, int), mpint *b){ mpdigit mask; if(b == nil) b = mpnew(bits); else mpbits(b, bits); b->sign = 1; b->top = DIGITS(bits); (*gen)((u8int*)b->p, b->top*Dbytes); mask = ((mpdigit)1 << (bits%Dbits))-1; if(mask != 0) b->p[b->top-1] &= mask; return mpnorm(b);}
#include "platform.h"
#include "mp.h"
mpint *
mprand(int bits, void (*gen)(u8int*, int), mpint *b)
{
mpdigit mask;
if(b == nil)
b = mpnew(bits);
else
mpbits(b, bits);
b->sign = 1;
b->top = DIGITS(bits);
(*gen)((u8int*)b->p, b->top*Dbytes);
mask = ((mpdigit)1 << (bits%Dbits))-1;
if(mask != 0)
b->p[b->top-1] &= mask;
return mpnorm(b);
}