public static ERational RandomERational(RandomGenerator rand) { EInteger bigintA = RandomEInteger(rand); EInteger bigintB = RandomEInteger(rand); if (bigintB.isZero()) { bigintB = EInteger.FromInt32(1); } return ERational.Create(bigintA, bigintB); }
public static EFloat RandomEFloat(RandomGenerator r) { if (r.UniformInt(100) == 0) { int x = r.UniformInt(3); if (x == 0) { return EFloat.PositiveInfinity; } if (x == 1) { return EFloat.NegativeInfinity; } if (x == 2) { return EFloat.NaN; } } return EFloat.Create(RandomEInteger(r), EInteger.FromInt64(r.UniformInt(400) - 200)); }
public static EInteger RandomSmallIntegral(RandomGenerator r) { int count = r.UniformInt(20) + 1; StringBuilder sb = new StringBuilder(); if (r.UniformInt(2) == 0) { sb.append('-'); } for (int i = 0; i < count; ++i) { if (i == 0) { sb.append((char) ('1' + r.UniformInt(9))); } else { sb.append((char) ('0' + r.UniformInt(10))); } } return EInteger.FromString(sb.toString()); }
public static EInteger RandomEInteger(RandomGenerator r) { int selection = r.UniformInt(100); if (selection < 40) { StringAndBigInt sabi = StringAndBigInt.Generate(r, 16); return sabi.getBigIntValue(); } if (selection < 50) { StringAndBigInt sabi = StringAndBigInt.Generate(r, 2 + r.UniformInt(35)); return sabi.getBigIntValue(); } else { int count = r.UniformInt(400) + 1; byte[] bytes = new byte[count]; for (int i = 0; i < count; ++i) { bytes[i] = (byte) ((int) r.UniformInt(256)); } return EInteger.FromBytes(bytes, true); } }