я вот эту хуятину запускаю циклом несколько раз А на выходе получаю вот такое я ноль в киберопасности
еблпн_inactive4868443, блять, ну ты и решение нашел :) это известная проблема в .net framework (в .net core её пофиксили) - это потому что объект рэндома инициализируется временем и если создать несколько объектов очень быстро то у них у всех будет одинаковый seed, и соответственно они все будут выдавать одинаковую последовательность. Самое простое решение - иметь только один статический объект рэндома (ибо оно и без этой проблемы тебе нахер не надо создавать объект рэндома на каждый пароль) using System; class Program { static void Main() { for (int i = 0; i < 100; i++) { Console.WriteLine(GeneratePassword()); } } static Random rnd = new Random(); const string valid = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*?_-"; static string GeneratePassword() { char[] password = new char[rnd.Next(8, 20)]; for (int i = 0; i < password.Length; i++) { password[i] = valid[rnd.Next(0, valid.Length)]; } return new string(password); } } C# using System; class Program { static void Main() { for (int i = 0; i < 100; i++) { Console.WriteLine(GeneratePassword()); } } static Random rnd = new Random(); const string valid = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*?_-"; static string GeneratePassword() { char[] password = new char[rnd.Next(8, 20)]; for (int i = 0; i < password.Length; i++) { password[i] = valid[rnd.Next(0, valid.Length)]; } return new string(password); } }