2014-10-20 2 views
-1

У меня есть идея чего-то, но у меня нет подсказки, как это сделать: D в основном, как в играх, например, каждые 6 часов вы можете открыть сундук, где вы можете захватить какой-то предмет бесплатно. Теперь я хочу иметь сундук, который пользователь может открывать каждые 6 часов, у меня есть элементы, написанные на сервере mysql, где каждый элемент дает очки опыта пользователю. но как это сделать? позволяет сказать, что база данных имеет 15 пунктов, теперь каждый элемент имеют свой шанс значение, например nothing = 75% of getting it sword_1 = 15% of getting it sword_2 = 30% of getting it любая идея, как это сделать?Как программировать «Шанс»?

+1

Тонны: Посмотрите «взвешенное распределение», и вы найдете множество решений этой проблемы. – BradleyDotNET

ответ

2
  1. Определить диапазон%, чтобы получить элемент Пример - sword_1 = 0-15%, sword_2 = 15-45% Обратите внимание, что приведенные выше цифры не добавляют до 100%, так что если вы действительно хочется вернуться более одного раза, иногда .. выше диапазоны заботятся о получении ничего. Если вы хотите получить несколько наград на рулоне, просто отрегулируйте диапазоны соответственно.

  2. Производите случайное число между 0 и 100. Для предметов, в которых сгенерированное число попадает в диапазон, это ваши награды, выигранные для этого раунда.

0

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

Nothing, 60 (60% chance) 
sword_1, 70 (10% chance) 
sword_2, 100 (30% chance) 

Убедитесь, что максимальный элемент 100.

Вы можете сделать выбор из этой таблицы со случайным числом:

SELECT * FROM ChestItems WHERE ChanceValue < FLOOR(RAND() * 100) ORDER BY ChanceValue DESC LIMIT 1; 

Есть несколько (и гораздо лучше) способов вы можете сделать это. Это просто быстрый пример.

Смежные вопросы