private static decimal RandomDecimal(RandomGenerator rand, int exponent)
{
var x = new int[4];
int r = rand.UniformInt(0x10000);
r |= ((int)rand.UniformInt(0x10000)) << 16;
x[0] = r;
if (rand.UniformInt(2) == 0) {
r = rand.UniformInt(0x10000);
r |= ((int)rand.UniformInt(0x10000)) << 16;
x[1] = r;
if (rand.UniformInt(2) == 0) {
r = rand.UniformInt(0x10000);
r |= ((int)rand.UniformInt(0x10000)) << 16;
x[2] = r;
}
}
x[3] = exponent << 16;
if (rand.UniformInt(2) == 0) {
x[3] |= 1 << 31;
}
return new Decimal(x);
}