add random functions

This commit is contained in:
KP9lKk 2024-12-18 15:17:24 +03:00
parent be164d5afe
commit 26e4077197

View File

@ -1,38 +1,44 @@
using LootBoxSimulator.Models.DAO; using LootBoxSimulator.Models.DAO;
RemoteDatabaseContext db = new RemoteDatabaseContext(); RemoteDatabaseContext databaseContext = new RemoteDatabaseContext();
decimal [] test = [0.25M, 0.5M, 0.125M , 0.125M];
Dictionary<int, (decimal, decimal)> rareDictionary = new Dictionary<int, (decimal, decimal)>();
var rates = db.Rates.OrderByDescending(it => it.Rate).ToList();
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(); Random random = new Random();
decimal number = Convert.ToDecimal(Math.Round(random.NextDouble(),2)); int randomIndex = random.Next(0, items.Count);
Console.WriteLine($"Random number: {number}"); return items[randomIndex];
decimal startRange = 0;
decimal endRange = rates[0].Rate;
rareDictionary.Add(rates[0].Id, (startRange, endRange));
for (int i = 1; i < rates.Count; i++)
{
startRange = endRange;
endRange = startRange + rates[i].Rate;
rareDictionary.Add(rates[i].Id, (startRange, endRange));
if (number >= startRange && number <= endRange)
{
Console.WriteLine(rates[i].Id);
};
} }
foreach (var keyValuePair in rareDictionary)
RateDao? RandomizeRate()
{ {
Console.WriteLine($"{keyValuePair.Key}: {keyValuePair.Value}"); 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];
} }
var items = db.Items.Where(it => it.Rate.Rate == 3).ToList(); start = end;
Random randomInt = new Random(); end += rates[i].Rate;
int randomIndex = randomInt.Next(0,items.Count); }
Console.WriteLine(items[randomIndex].Name); return null;
//вынести попадание в диапазон в отдельную функцию, которая возвращает айди редкость }
//сделать ролл по предметам с условием выпавшей редкости и вернуть случайную вещь
//сгенерировать случайное число от 0 до кол-во вещей после фильтра и выдать случайный
//предмет по выпавшему индексу