add sample for random algorithm

This commit is contained in:
KP9lKk 2024-12-17 18:06:26 +03:00
parent d0cbd5a88b
commit 5e078be179

View File

@ -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)
startRange = endRange;
endRange = startRange + test[i];
if (number >= startRange && number <= endRange)
{
Console.WriteLine($"Id: {categoryDao.Id} Name: {categoryDao.Name}");
Console.WriteLine($"{startRange} - {endRange} {true}");
break;
}
break;
case 2: break;
case 3: ChangeCategory(); break;
default:
Console.WriteLine("Unkown Menu Position");
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)
{
}