From 5e078be179860d2da412632cdf772ad04c9f100f Mon Sep 17 00:00:00 2001 From: KP9lKk Date: Tue, 17 Dec 2024 18:06:26 +0300 Subject: [PATCH] add sample for random algorithm --- LootBoxSimulator/Program.cs | 95 ++++++++++++------------------------- 1 file changed, 30 insertions(+), 65 deletions(-) diff --git a/LootBoxSimulator/Program.cs b/LootBoxSimulator/Program.cs index 71c333a..3a1b74c 100644 --- a/LootBoxSimulator/Program.cs +++ b/LootBoxSimulator/Program.cs @@ -1,75 +1,40 @@ -using System.Reflection.Emit; -using System.Runtime.InteropServices.ComTypes; -using System.Text; -using System.Threading.Channels; -using LootBoxSimulator.Models.DAO; + +decimal [] test = [0.25M, 0.5M, 0.125M , 0.125M]; +//(start)-(end) +//(0,5) - (0,5+ 0,25) +//(0,5 + 0,25) - (0,5 + 0,25 + 0,125) +//(0,5 + 0,25 + 0,125) - (0,5 + 0,25 + 0,125 + 0,1) +//0.5 0 +//0.25 1 -RemoteDatabaseContext db = new RemoteDatabaseContext(); -StringBuilder stringBuilder = new StringBuilder(); -stringBuilder.Append("1. Print category"); -stringBuilder.AppendLine(); -stringBuilder.Append("2. Print rate"); -stringBuilder.AppendLine(); -stringBuilder.Append("3. Print items"); -stringBuilder.AppendLine(); -stringBuilder.Append("4. Edit category"); -Console.WriteLine(stringBuilder.ToString()); -if (!int.TryParse(Console.ReadLine(), out int menuPosition)) +//0-1 +//0.5 0.25 0.125 0.125 +//0 - 0.5 //unrare +//0.5 - 0.75 //rare +//0.75 - 0.875 //epic +//0.875 - 1 //legend +test = test.OrderByDescending(it => it).ToArray(); +foreach (var @decimal in test) { - Console.WriteLine("Please enter a valid number"); - return; + Console.WriteLine(@decimal); } -switch (menuPosition) +Random random = new Random(); +decimal number = Convert.ToDecimal(Math.Round(random.NextDouble(),2)); +Console.WriteLine($"Random number: {number}"); +decimal startRange = 0; +decimal endRange = test[0]; +if(number >= startRange && number <= endRange) Console.WriteLine(true); +for (int i = 1; i < test.Length; i++) { - case 1: - foreach (var categoryDao in db.Categories) - { - Console.WriteLine($"Id: {categoryDao.Id} Name: {categoryDao.Name}"); - } - break; - case 2: break; - - case 3: ChangeCategory(); break; - default: - Console.WriteLine("Unkown Menu Position"); + startRange = endRange; + endRange = startRange + test[i]; + if (number >= startRange && number <= endRange) + { + Console.WriteLine($"{startRange} - {endRange} {true}"); break; + } } -void ChangeCategory() -{ - if(!int.TryParse(Console.ReadLine(), out int CategoryID)) return; - String CategoryName = Console.ReadLine(); - if(String.IsNullOrEmpty(CategoryName)) return; - var categoryDao = db.Categories.Find(CategoryID); - categoryDao.Name = CategoryName; - db.SaveChanges(); -} -void RemoveCategory() -{ - Console.WriteLine("Please enter a Category ID to remove"); - if(!int.TryParse(Console.ReadLine(), out int CategoryID)) return; - var categoryDao = db.Categories.Find(CategoryID); - db.Categories.Remove(categoryDao); - db.SaveChanges(); -} -void AddCategory() -{ - Console.WriteLine("Please enter a Category Name for new category"); - String CategoryName = Console.ReadLine(); - if(String.IsNullOrEmpty(CategoryName)) return; - CategoryDao categoryDao = new CategoryDao(); - categoryDao.Name = CategoryName; - db.Categories.Add(categoryDao); - db.SaveChanges(); -} -//задача на попадание в диапазон -//собрать все диапазоны из таблицы rate в формате(предаврительно значения нужно отсортировать по убыванию): -//start_range, end_range и циклом проверять попадание в диапазон, интерфейс функции: -//добавить проверку на ввод значения, значение может находиться в диапазон от 0 до суммы вероятностей таблицы Rate -void NumberInRange(decimal min) -{ - -} \ No newline at end of file