using System.Drawing; using LootBoxSimulator.Models.DAO; RemoteDatabaseContext databaseContext = new RemoteDatabaseContext(); var sum = databaseContext.Rates.Select(dsadsa => dsadsa.Rate).Sum(); var result = RandomizeRate(); var item = RandomizeItem(result); Console.WriteLine($"{item?.Name} {item?.Id}"); ItemDao? RandomizeItem(RateDao? rateDao){ if(rateDao == null) return null; var items = databaseContext.Items .Where(item => item.Rate.Id == rateDao.Id ).ToList(); if(items.Count == 0) return null; Random random = new Random(); int randomIndex = random.Next(0, items.Count); return items[randomIndex]; } RateDao? RandomizeRate() { var rates = databaseContext .Rates .OrderByDescending(item => item.Rate).ToList(); if (rates.Count == 0) return null; decimal start = 0; decimal end = rates[0].Rate; Random random = new Random(); decimal number = Convert.ToDecimal(random.NextDouble()); for (var i = 0; i < rates.Count; i++) { if (number >= start && number <= end) { Console.WriteLine($"{number} {start} {end}"); return rates[i]; } start = end; end += rates[i].Rate; } return null; } //при выводе информации об предмете, который выпал необходимо окрашивать //бэкграунд в цвет редкости //поскольку консоль поддерживает только перечисление некоторых цветов //необходимо сделать какой-нибудь конверт из hex формата в Console.Color формат //для упрощения заменим hex выражения в бд на названия цветов //пример работы с бэкграундом консоли: var rates = databaseContext.Rates; string colorName = "Yellow"; ConsoleColor color = (ConsoleColor)Enum.Parse(typeof(ConsoleColor), colorName); Console.BackgroundColor = color; Console.WriteLine("Лютый текст"); Console.ResetColor(); Console.WriteLine("Не такой лютый текст"); Console.WriteLine("Не такой лютый текст"); Console.WriteLine("Не такой лютый текст");