I am creating a simple class to generate fake lorem ipsum text so I have:
public static class LoremIpsumGenerator {
private static Random _random = new Random();
private static String _lorem = Constants.LoremIpsumText;
private static IEnumerable<String> _words = _lorem.ToWordList();
public static String GetText(Int32 totalLength = 200, Int32? paragraphLength = null) {
IList<String> words = _words.OrderBy(x => Guid.NewGuid()).ToList();
String text = String.Empty;
String paragraph = _lorem.Substring(0, 12);
Int32 index = 0;
while (text.Length < totalLength) {
//Int32 a = (paragraphLength == null ? _random.Next(20, 80) : paragraphLength.Value);
Int32 limit = _random.Next(20, 80);
while (paragraph.Length < limit) {
paragraph += (String.IsNullOrEmpty(paragraph) ? words[index].ToFirstLetterUppercase() : words[index].ToLower()) + " ";
index++;
if (index > words.Count)
index = 0;
}
paragraph = paragraph.TrimEnd();
text += paragraph + ". ";
paragraph = String.Empty;
}
return text;
} // GetText
} // LoremIpsumGenerator
The problem is in line:
Int32 l = (paragraphLength == null ? _random.Next(20, 80) : paragraphLength.Value);
It gives me almost always the same value ... For example I got:
21, 21, 47, 47, 47, 47, 47, 47, 47, 47, 47
or
50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50
Does anyone know how to prevent this?
UPDATE
public static class LoremIpsumGenerator {
private static Random _random = new Random();
private static String _lorem = Constants.LoremIpsumText;
private static IEnumerable<String> _words = _lorem.ToWordList();
public static String GetText(Int32 totalLength = 200, Int32? paragraphLength = null) {
IList<String> words = _words.OrderBy(x => Guid.NewGuid()).ToList();
String text = String.Empty;
String paragraph = _lorem.Substring(0, 12);
Int32 index = 0;
while (text.Length < totalLength) {
Int32 limit = _random.Next(20, 80);
while (paragraph.Length < limit) {
paragraph += (String.IsNullOrEmpty(paragraph) ? words[index].ToFirstLetterUppercase() : words[index].ToLower()) + " ";
index++;
if (index > words.Count)
index = 0;
}
paragraph = paragraph.TrimEnd();
text += paragraph + ". ";
paragraph = String.Empty;
}
} // GetText
} // LoremIpsumGenerator