- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
static /*public*/ string GenerateRandomJpegName()
{
return GenerateRandomString() + ".jpg";
}
static string GenerateRandomString()
{
bool UseSigns = true;
bool UseUpperLetters = true;
bool UseLetters = true;
int Length;
NewLabel:
try
{
Length = new Random(DateTime.Now.Millisecond - DateTime.Now.Second + new Random(DateTime.Now.Millisecond).Next(0, 100) / new Random(DateTime.Now.Millisecond - DateTime.Now.Second).Next(0, 10)).Next(0, 100);
}
catch { goto NewLabel; }
string result = "C:/";
try
{
int Seed = 0;
char[] letters = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
char[] signs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
List<char> keyWords = new List<char>();
List<char> upperLetters = new List<char>();
foreach (char c in letters)
upperLetters.Add(Convert.ToChar(c.ToString().ToUpper()));
if (UseLetters)
foreach (char c in letters)
keyWords.Add(c);
if (UseSigns)
foreach (char c in signs)
keyWords.Add(c);
if (UseUpperLetters)
foreach (char c in upperLetters)
keyWords.Add(c);
int MaxValue = keyWords.Count;
for (int i = 0; i <= Length; i++)
{
try
{
Random mainrand = new Random(Seed);
char RandChar = keyWords[mainrand.Next(0, MaxValue)];
result += RandChar;
Seed += DateTime.Now.Millisecond + Seed - new Random().Next(10) + new Random(DateTime.Now.Millisecond + 800 * 989 / 3).Next(10);
}
catch { continue; }
}
}
catch { }
return result;
}
ErmineMD 28.10.2012 03:04 # 0
inkanus-gray 28.10.2012 06:42 # 0
Во втором месте — автор думает, что так результат будет более рандомным.
ErmineMD 28.10.2012 06:44 # 0
inkanus-gray 28.10.2012 07:05 # 0
В итоге вместо ожидаемого равномерного распределения будет трудно предсказуемое. Не факт, что все значения теперь будут выдаваться с равной вероятностью. , а 15-ю строку прозевал. Туплю.
vladthesparrow 14.11.2012 09:32 # +1
Методом тыка он записал new Random.Next() - и естественно, он получил одно и то же число в каждой итерации. Перебрав много безуспешных попыток, и отказываясь прочитать-таки MSDN, отчаявшись заставить Random работать "правильно", он взял и вставил миллисекунды текущего времени вместо псевдослучайного числа.
bormand 28.10.2012 08:03 # +7
Зачем? Так долго набрать public, если он когда-нибудь понадобится?
> C:/
Идеальное место для хранения рисунков.
> Length = new Random(...).Next(0,100)
Зачем? Если длина строки распределена равномерно, мы получим достаточно хреновое распределение результатов. Если уж распределять - так пропорционально числу вариантов при каждой длине строки. К примеру, если составляем строку из 1-3 цифр, то у одной цифры вероятность 1/111, у двух 10/111, у трех 100/111. А еще лучше вообще зафиксировать длину в районе 30-40 и не ипать моск.
> char[] signs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
signs? *facepalm.jpg*
> Seed += DateTime.Now.Millisecond + Seed - ...
Процы сейчас работают быстро, поэтому в пределах данной функции DateTime.Now.Millisecond является константой, что не особо улучшает свойства генератора.
> try { ... } catch { }
Автор не уверен в себе? Я не вижу тут функций, которые могут вбросить исключение (ну разве если память кончится), равно как и повода молча генерить при этом чпег с именем c:\.jpg.
> try { ... } catch { continue; }
Не получилось придумать букву? Ну и хер с ней, никто не заметит.
bormand 28.10.2012 08:09 # 0
USB 28.10.2012 08:12 # +1
> Идеальное место для хранения рисунков.
Для прона лучше /usr/bin
bormand 28.10.2012 08:20 # 0
absolut 28.10.2012 09:15 # 0
bormand 28.10.2012 10:09 # +1
USB 28.10.2012 10:13 # 0
Чтоб из консоли смотреть?
absolut 28.10.2012 10:21 # +2
USB 28.10.2012 11:31 # −1
Рекомендуется поставить цветной текстовой режим выокого разрешения типа 132×60. Вообщем я ценитель.
USB 28.10.2012 11:33 # 0
bormand 28.10.2012 11:52 # +12
USB 28.10.2012 12:26 # +1
bormand 28.10.2012 11:46 # +2
USB 28.10.2012 12:20 # 0
bormand 28.10.2012 13:22 # +1
USB 28.10.2012 13:42 # +2