public static String RandomDecimalString(RandomGenerator r)
{
int count = r.UniformInt(40) + 1;
var sb = new StringBuilder();
if (r.UniformInt(2) == 0) {
sb.Append('-');
}
for (var i = 0; i < count; ++i) {
if (i == 0 && count > 1) {
sb.Append((char)('1' + r.UniformInt(9)));
} else {
sb.Append((char)('0' + r.UniformInt(10)));
}
}
if (r.UniformInt(2) == 0) {
sb.Append('.');
count = r.UniformInt(30) + 1;
for (var i = 0; i < count; ++i) {
sb.Append((char)('0' + r.UniformInt(10)));
}
}
if (r.UniformInt(2) == 0) {
sb.Append('E');
count = (r.UniformInt(100) < 10) ? r.UniformInt(5000) :
r.UniformInt(20);
if (count != 0) {
sb.Append(r.UniformInt(2) == 0 ? '+' : '-');
}
sb.Append(TestCommon.IntToString(count));
}
return sb.ToString();
}