Roblox studio (программирование) - Компьютерные вопросы

Вопрос Roblox studio (программирование)

Регистрация
24 Окт 2013
Сообщения
80
Репутация
0
Спасибо
0
Монет
0
Как сделать в скрипте шансы на разные события что бы можно было ввести разные числа каждому событию и в зависимости от соотношений чисел к друг другу игрой выбиралось событие. Или как сделать что то в этом роде, нечто большее чем math.random(x,y)
 
Регистрация
8 Окт 2013
Сообщения
95
Репутация
0
Спасибо
0
Монет
0
В Roblox Studio ты можешь использовать несколько подходов для создания шансов на разные события, более сложных, чем просто math.random(x,y). Вот три варианта:

1. Весовые коэффициенты (Weighted Randomness):

local events = {
"Event 1",
"Event 2",
"Event 3"
}

local weights = {
10,
20,
30
}

-- Функция для выбора события с весовыми коэффициентами
function chooseEvent(events, weights)
local totalWeight = 0
for _, weight in ipairs(weights) do
totalWeight = totalWeight + weight
end

local randomValue = math.random(1, totalWeight)
local cumulativeWeight = 0
for i, event in ipairs(events) do
cumulativeWeight = cumulativeWeight + weights
if randomValue <= cumulativeWeight then
return event
end
end
end

-- Выбор события
local chosenEvent = chooseEvent(events, weights)
print("Выбранное событие:", chosenEvent)
Объяснение:

events - список названий событий.
weights - список весовых коэффициентов, которые определяют вероятность выбора каждого события. Чем больше значение веса, тем выше вероятность.
chooseEvent - функция, которая выбирает случайное событие с учетом весовых коэффициентов. Она работает следующим образом:
Сначала суммируются все веса, чтобы получить totalWeight.
Затем генерируется случайное число от 1 до totalWeight.
Функция проходит по списку событий и суммирует веса. Если сгенерированное число меньше или равно сумме весов, то возвращается соответствующее событие.
2. Вероятностная таблица (Probability Table):

local probabilityTable = {
{ event = "Event 1", probability = 0.2 },
{ event = "Event 2", probability = 0.5 },
{ event = "Event 3", probability = 0.3 }
}

-- Функция для выбора события с вероятностной таблицей
function chooseEventByProbability(probabilityTable)
local randomValue = math.random()
local cumulativeProbability = 0

for _, entry in ipairs(probabilityTable) do
cumulativeProbability = cumulativeProbability + entry.probability
if randomValue <= cumulativeProbability then
return entry.event
end
end
end

-- Выбор события
local chosenEvent = chooseEventByProbability(probabilityTable)
print("Выбранное событие:", chosenEvent)
Объяснение:

probabilityTable - таблица, содержащая пары “событие - вероятность”. Вероятности должны суммироваться до 1 (или 100%).
chooseEventByProbability - функция, которая выбирает случайное событие в соответствии с вероятностями из таблицы. Она генерирует случайное число от 0 до 1 и проходит по таблице, суммируя вероятности. Если сгенерированное число меньше или равно сумме вероятностей, то возвращается соответствующее событие.
3. Использование библиотек:

Есть библиотеки Roblox, которые предлагают более сложные и гибкие инструменты для работы с вероятностями. Например, Random из RbxUtility может быть полезна для генерации случайных чисел с различными распределениями.

Важно:

Проверка на корректность: Убедитесь, что ваши веса и вероятности суммируются правильно, чтобы избежать ошибок.
Гибкость: Эти методы позволяют легко менять шансы на события, просто изменяя значения весов или вероятностей.
Применимость: Используйте метод, который лучше всего подходит для ваших потребностей и сложности игры.
Не стесняйтесь экспериментировать с разными подходами, чтобы найти наиболее подходящий для вашей игры!
 
Регистрация
22 Июл 2013
Сообщения
90
Репутация
-3
Спасибо
0
Монет
0
Для создания скрипта, который определяет событие на основе заданных вероятностей для каждого события, можно использовать кастомную логику вероятностей.

Один из способов реализации подобной логики - использование массива, в котором каждому событию соответствует диапазон чисел. Затем, сгенерировав случайное число, можно определить, какое событие произошло на основе вероятностей.

Приведу пример на JavaScript:

```javascript
// Задаем вероятности для каждого события
const probabilities = {
event1: 0.2, // 20% вероятность
event2: 0.5, // 50% вероятность
event3: 0.3 // 30% вероятность
};

// Преобразуем вероятности в диапазоны чисел
let rangeMax = 0;
const ranges = Object.keys(probabilities).map((event) => {
const range = { event, min: rangeMax, max: rangeMax + probabilities[event] };
rangeMax += probabilities[event];
return range;
});

// Генерируем случайное число в диапазоне [0, 1)
const randomNumber = Math.random();

// Находим событие на основе сгенерированного числа
let selectedEvent;
ranges.forEach((range) => {
if (randomNumber >= range.min && randomNumber < range.max) {
selectedEvent = range.event;
}
});

console.log(selectedEvent); // Выводим выбранное событие
```

В данном примере мы определяем вероятности для каждого события, затем преобразуем вероятности в диапазоны чисел и выбираем событие на основе сгенерированного случайного числа. Каждому событию присваивается вероятность, и исход будет зависеть от этой вероятности.
 
Сверху Снизу