У меня есть такой запрос
SELECT * FROM `prizes` WHERE `caseid` = '{$id}' AND `winner` = '0' ORDER BY RAND() LIMIT 1
Я получаю рандомный приз из базы, но есть проблема, при выдачи выдается рандом полный, т.е может 4 раза подряд выпасть дорогой приз а дешевый нет. Я добавил в таблицу параметр chance подскажите как мне получить так-же 1 строку из базы но уже сделать выборку не только рандомно но и по шансу.
Шанс до 100, т.е если указано 90 выпадает чаще чем если указано 89 и наоборот.
Если указано 10 выпадает реже если указано 90 но выпасть может.
В базе 11 тысяч призов.
1 За ORDER BY RAND() Вам могут отрубить руки, насколько я знаю.. Просто получите все элементы в переменную, а затем выбирайте рандомный приз средствами другого языка - сэкономите запросы.
2 Как раз с помощью серверного языка можно реализовать задуманное Вами. Допустим, м два этапа. Но рандом на то и рандом, что выбирает рандомно. Вот здесь подобный вопрос был
Сборка персонального компьютера от Artline: умный выбор для современных пользователей