Cделал в качестве обучения Python 3
Работает следующим образом
Вводите то количество раз которое хотите открыть контейнер с обликами корпорации ZIVCAS
получате результат
В ходе проекта получилось реализовать механнику разбора дубликата облика на сталкоины
не смог осилить визуал и общий подсёт: пыли, монет, и кредитов при разборе красок
вот сам код:
`import random
from collections import defaultdict, Counter
items = [
(“краска «Сновидение» для оружия”, 1.3531),
(“краска «Сновидение» для брони”, 1.3531),
(“краска «Точная настройка» для оружия”, 1.3531),
(“краска «Точная настройка» для брони”, 1.3531),
(“краска «лихорадка» для оружия”, 1.3531),
(“краска «лихорадка» для брони”, 1.3531),
(“краска «VolumeHex Azure» для оружия”, 2.2551),
(“краска «VolumeHex Azure» для брони”, 2.2551),
(“краска «Фрагментация» для оружия”, 2.2551),
(“краска «Фрагментация» для брони”, 2.2551),
(“краска «Северный ветер» для оружия”, 2.2551),
(“краска «Северный ветер» для брони”, 2.2551),
(“50 аномальной пыли”, 13.5308),
(“75 аномальной пыли”, 12.4032),
(“100 аномальной пыли”, 10.1481),
(“150 монет события”, 13.5308),
(“250 монет события”, 12.4032),
(“300 монет события”, 10.1481),
(“нестабильная аномальная батарея”, 2.2551),
(“Премиум на 3 дня”, 2.2551),
(“Премиум на 7 дней”, 0.6765),
(“Уникальная вещь”, 1.0)
]
unique_items = [
(“ZIVCAS «Hornet»”, 0.25),
(“ZIVCAS «Citadel»”, 0.25),
(“ZIVCAS «Judge»”, 0.25),
(“ZIVCAS «Gurkhas»”, 0.25)
]
unique_items_names = [item[0] for item in unique_items]
guaranteed_unique_after = 49
def select_item():
total_weight = sum(item[1] for item in items)
rand_val = random.uniform(0, total_weight)
current_sum = 0
for item, weight in items:
current_sum += weight
if rand_val <= current_sum:
return item
def select_unique_item(obtained_unique_items):
available_unique_items = [item for item in unique_items_names if item not in obtained_unique_items]
if not available_unique_items:
return “1250 сталкоинов”
return random.choices(available_unique_items, k=1)[0]
def gacha_simulation(spins):
results = defaultdict(int)
obtained_unique_items = set()
unique_counter = 0
for spin in range(spins):
if unique_counter >= guaranteed_unique_after:
unique_item = select_unique_item(obtained_unique_items)
results[unique_item] += 1
obtained_unique_items.add(unique_item)
unique_counter = 0
else:
item = select_item()
if item == "Уникальная вещь":
unique_item = select_unique_item(obtained_unique_items)
results[unique_item] += 1
obtained_unique_items.add(unique_item)
unique_counter = 0
else:
results[item] += 1
unique_counter += 1
return results
def main():
spins = int(input(“Введите количество прокрутов: ”))
results = gacha_simulation(spins)
output_order = [
"краска «Сновидение» для оружия",
"краска «Сновидение» для брони",
"краска «Точная настройка» для оружия",
"краска «Точная настройка» для брони",
"краска «лихорадка» для оружия",
"краска «лихорадка» для брони",
"краска «VolumeHex Azure» для оружия",
"краска «VolumeHex Azure» для брони",
"краска «Фрагментация» для оружия",
"краска «Фрагментация» для брони",
"краска «Северный ветер» для оружия",
"краска «Северный ветер» для брони"
"50 аномальной пыли",
"75 аномальной пыли",
"100 аномальной пыли",
"150 монет события",
"250 монет события",
"300 монет события",
"нестабильная аномальная батарея",
"Премиум на 3 дня",
"Премиум на 7 дней",
"ZIVCAS «Hornet»",
"ZIVCAS «Citadel»",
"ZIVCAS «Judge»",
"ZIVCAS «Gurkhas»",
"1250 сталкоинов"
]
for item in output_order:
print(f"{item}: {results[item]}")
if name == “main”:
main()`
попробывать можно тут
https://www.sololearn.com/ru/compiler-playground/crxztxbKhQZP
Если вы можете предложить как можно исправить☺
Всё сделано в не комерческих целях не бейте по жопе.