- Компиляторы
-
Обучение
Изучить Python Запускаемые примеры, NumPy, pandas и другое Изучить ИИНейросети, ML и LLM с нуля Изучить C и C++ Указатели, память, STL и современный C++ Изучить C#Основы C#, ООП, LINQ, async и упражнения .NET Изучить MatplotlibЛинейные, столбчатые, точечные и круговые диаграммы с визуализацией Алгоритмы на Python Поиск, сортировка, рекурсия и визуализация O(n) Алгоритмы на C и C++ Сравнение реализаций на C и C++ Программирование для детей Учись программировать, играя!
- ЗадачиНовое
- УчителямНовое
- Обновления
- Угостить кофе
Многорукий бандит — это ряд игровых автоматов (рук) с неизвестными выплатами. Эпсилон-жадная стратегия балансирует исследование и использование: с вероятностью epsilon она дёргает случайную руку, иначе — руку с наибольшей оценённой ценностью.
Чтобы запуск можно было проверить, случайные числа передаются на вход. Начните с оценки Q = 0 и счётчика N = 0 для каждой руки. На каждом шаге t:
- Если
random_values[t]< epsilon, исследуйте: arm =random_arms[t]. Иначе используйте: arm = рука с наибольшим Q (при равенстве — наименьший индекс). - Получите reward =
rewards[t][arm]. - N[arm] ← N[arm] + 1 и Q[arm] ← Q[arm] + (reward - Q[arm]) / N[arm] — скользящее среднее.
Реализуйте epsilon_greedy(rewards, epsilon, random_values, random_arms).
Входные данные
rewards: По одной строке на шаг с наградой, которую каждая рука выплатила бы на этом шаге.
epsilon: Вероятность исследования.
random_values: По одному случайному числу в [0, 1) на шаг.
random_arms: Рука, которую нужно дёрнуть на каждом шаге при исследовании.
Выходные данные
Верните итоговые оценки Q, по одной на руку.
Ограничения
1 ≤ шаги ≤ 10 000, 1 ≤ руки ≤ 100
0 ≤ epsilon ≤ 1, -100 ≤ каждая награда ≤ 100
Примеры
Пример 1
Ввод:
rewards = [
[1.0, 3.0],
[1.0, 3.0],
[1.0, 3.0],
[1.0, 3.0]
]
epsilon = 0.1
random_values = [0.5, 0.05, 0.7, 0.9]
random_arms = [0, 1, 0, 0]
Ожидаемый вывод:
[1.0, 3.0]
Пояснение
Шаг 0 — использование; оба Q равны 0, поэтому дёргается рука 0 и Q = [1, 0]. Шаг 1 — исследование (0.05 < 0.1), пробуется рука 1: Q = [1, 3]. Шаги 2 и 3 используют лучшую руку 1. Результат: [1, 3].
Пример 2
Ввод:
rewards = [
[2.0, 5.0],
[4.0, 5.0],
[0.0, 5.0]
]
epsilon = 0.0
random_values = [0.5, 0.5, 0.5]
random_arms = [1, 1, 1]
Ожидаемый вывод:
[2.0, 0.0]
Пояснение
При epsilon = 0 агент никогда не исследует. Он всё время дёргает руку 0, среднее которой меняется 2 → 3 → 2, и так и не узнаёт, что рука 1 платит 5. Результат: [2, 0].
Ссылки
-
Пример 1 Не запущеноВвод:
rewards = [ [1.0, 3.0], [1.0, 3.0], [1.0, 3.0], [1.0, 3.0] ] epsilon = 0.1 random_values = [0.5, 0.05, 0.7, 0.9] random_arms = [0, 1, 0, 0]Ожидаемый вывод:[1.0, 3.0]Ваш вывод -
Пример 2 Не запущеноВвод:
rewards = [ [2.0, 5.0], [4.0, 5.0], [0.0, 5.0] ] epsilon = 0.0 random_values = [0.5, 0.5, 0.5] random_arms = [1, 1, 1]Ожидаемый вывод:[2.0, 0.0]Ваш вывод
При отправке также выполняются ещё 4 скрытых теста. Если код не пройдёт один из них, вы увидите этот тест. Решите задачу, чтобы увидеть все.
Онлайн-компилятор Java (Джава)
Пишите, компилируйте и запускайте код на Java прямо в браузере - на русском языке, без установки JDK и IDE. Несколько классов и файлов, сохранение проектов и совместная работа.
🚀 260,408 всего выполнений (5,854 в этом месяце)
Практикуйте Java на задачах
Решайте задачи прямо в редакторе: запускайте тесты, отправляйте решение и получайте AI-рецензию.
☕ Онлайн-компилятор Java
Онлайн-компилятор Java от CodeUtility позволяет писать и запускать программы на Джаве прямо в браузере - на русском языке, без установки JDK и IDE. Доступны версии Java 8, 11, 17, 21 и последняя.
Код компилирует настоящий javac и выполняет обычная среда Java на сервере, поэтому классы, методы
и ввод через Scanner ведут себя так же, как на вашем компьютере.
Удобно, чтобы практиковать ООП, решать учебные задачи, готовиться к собеседованиям или быстро проверить фрагмент кода с любого устройства.
Больше, чем просто запуск кода
В одном редакторе есть всё для работы: несколько файлов, изолированный терминал, библиотеки для выбранной версии, сохранение проектов, общий доступ по ссылке и совместная работа в реальном времени.
Как пользоваться редактором
Выберите версию языка, откройте или создайте файл, напишите код и нажмите «Запустить». Результат появится в терминале. После входа в аккаунт можно хранить файлы в рабочем пространстве, устанавливать библиотеки и работать над кодом вместе с другими.
- Выберите версию и отредактируйте текущий файл или откройте другой файл рабочего пространства.
- Запустите код, при необходимости введите данные в терминале и просмотрите сохранённую историю запусков.
- Используйте библиотеки, инструменты рабочего пространства, общий доступ и чат, когда для задачи требуется несколько фрагментов кода.
💡 Основы Java и примеры, которые можно попробовать выше
1. Объявление переменных и констант
В Java необходимо указывать тип каждой переменной. Используйте final для констант.
int age = 30;
double pi = 3.14159;
char grade = 'A';
String name = "Alice";
boolean isActive = true;
// Константы
final int MAX_USERS = 100;
final String COMPANY = "CodeUtility";
2. Условные операторы (if / switch)
Используйте if, else if и switch для управления потоком выполнения.
int x = 2;
if (x == 1) {
System.out.println("Один");
} else if (x == 2) {
System.out.println("Два");
} else {
System.out.println("Другое");
}
switch (x) {
case 1:
System.out.println("Один");
break;
case 2:
System.out.println("Два");
break;
default:
System.out.println("Другое");
}
3. Циклы
Используйте for, while и do-while для итераций.
for (int i = 0; i < 3; i++) {
System.out.println(i);
}
int n = 3;
while (n > 0) {
System.out.println(n);
n--;
}
4. Массивы
Массивы хранят последовательности фиксированного размера одного типа.
int[] numbers = {10, 20, 30};
System.out.println(numbers[1]);
5. Работа с ArrayList
Используйте ArrayList для списков динамического размера.
import java.util.ArrayList;
ArrayList<Integer> nums = new ArrayList<>();
nums.add(1);
nums.add(2);
nums.add(3);
nums.remove(Integer.valueOf(2));
for (int num : nums) {
System.out.print(num + " ");
}
6. Ввод/вывод в консоли
Используйте Scanner для ввода и System.out для вывода.
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
System.out.print("Введите ваше имя: ");
String name = scanner.nextLine();
System.out.println("Привет, " + name);
7. Функции
Определяйте методы с типами возвращаемых значений и параметрами.
public static int add(int a, int b) {
return a + b;
}
System.out.println(add(3, 4));
8. HashMap
Используйте HashMap для хранения пар ключ-значение.
import java.util.HashMap;
HashMap<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
System.out.println(ages.get("Alice"));
9. Обработка исключений
Используйте try и catch для обработки исключений времени выполнения.
try {
throw new Exception("Что-то пошло не так");
} catch (Exception e) {
System.out.println(e.getMessage());
}
10. Файловый ввод/вывод
Используйте Files и Paths из java.nio.file для работы с файлами.
import java.nio.file.*;
import java.io.IOException;
Files.writeString(Paths.get("file.txt"), "Привет файл");
String content = Files.readString(Paths.get("file.txt"));
System.out.println(content);
11. Работа со строками
Строки в Java поддерживают множество методов, таких как length(), substring() и contains().
String text = "Hello World";
System.out.println(text.length());
System.out.println(text.substring(0, 5));
System.out.println(text.contains("World"));
12. Классы и объекты
Java поддерживает объектно-ориентированное программирование с использованием классов и экземпляров.
class Person {
String name;
Person(String name) {
this.name = name;
}
void greet() {
System.out.println("Привет, я " + name);
}
}
Person p = new Person("Alice");
p.greet();
❓ Частые вопросы
Как запустить код на Джаве онлайн?
Напишите или вставьте код в редактор и нажмите «Запустить». Программа скомпилируется настоящим javac и выполнится на сервере, а вывод появится в терминале.
Какие версии Java доступны?
Java 8, 11, 17, 21 и последняя версия. Нужную можно выбрать в списке над редактором.
Нужно ли устанавливать JDK?
Нет. Компилятор и среда выполнения работают на сервере, вам нужен только браузер.
Можно ли использовать несколько классов и файлов?
Да. В редакторе можно создавать несколько файлов .java и запускать их как один проект.
Работает ли ввод через Scanner?
Да. Программа запрашивает данные во время работы: вводите их в терминале.
Это бесплатно?
Да. Запуск кода бесплатен и не требует регистрации. Аккаунт нужен, чтобы сохранять проекты и делиться ими.
Нужен другой язык программирования? Все онлайн-компиляторы: Python, C++, C, C#, Java и ещё 8 языков