Сегодня столкнулся с небольшой проблемкой, хотя и проблемой это назвать сложно. Написал функцию которая должна была выбирать случайный элемент массива, но после теста фунции оказалось что никакие они не случайные. Первые 20 строк были похожи друг на друга как две капли воды, дальше не смотрел. Предположив что небольшая пауза в 20мс поможет вставил в функцию Thread.Sleep(20); .
Код был примерно такой
1 2 3 4 5 6 7 8 9 10 |
for (int i=0;i<100;i++) { textBox1.AppendText(GenDig()+"\r\n"); } int GenDig() { Random r = new Random(); return r.Next(0,10); } |
После установки небольшой паузы в 20 миллисекунд повторов уже не наблюдалось, но естественно выполнялось медленее.
1 |
Thread.Sleep(20); |
Все изменилось когда Random был вынесен за пределы функции, возможно можно было сделать подругому и лучше, но к сожалению в C# еще новичек. Можете предложить ваш вариант в коментарии. 🙂
1 2 3 4 5 6 7 8 9 10 |
Random r = new Random(); for (int i=0;i<100;i++) { textBox1.AppendText(GenDig(r)+"\r\n"); } int GenDig(Random r) { return r.Next(0,10); } |
После этого все стало выполняться быстро, так как нету паузы в работе функции и уже не видно повторов в 20 строк.