Как на PHP сделать рандомно выпадение предметов
|
|
wInDx | Дата: Среда, 29 Июня 2011, 15:05 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Доброго времени суток! Подскажите как в php сделать например выпадение рандомно Из базы предмета в зависимости от процента!Вот допустим есть вещь1 вещь2 вещь3. У вещи1 шанс в поле chance равен 10, у вещи2 равен 40, и у вещи 3 равен 80.Допусм игрок нажимает на ссылку "испытать удачу" при нажатии из базы берется вещь в зависимости от поля chance, чем больше шанс тем больше будет падать вещь у которой шанс больше, и меньше будет падать вещь у которой шанс меньше! Как сделат подскажите плз:))
Ubi Concordia Ibi Victoria
|
|
| |
lvovand | Дата: Среда, 29 Июня 2011, 15:22 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| можно так сделать выбираешь число через rand()
число = rand(1,100); если 1<=число<10 - выпала вещь 1 иначе если 1<=число<40 - выпала вещь 2 иначе если 1<=число<80 - выпала вещь 3 иначе - не выпало ничего
Разработка и продвижение сайтов. Дизайн
|
|
| |
wInDx | Дата: Среда, 29 Июня 2011, 16:05 | Сообщение # 3 |
почетный гость
Сейчас нет на сайте
| Я так же само сначала сделал!Но все таки может есть другой вариант
Ubi Concordia Ibi Victoria
|
|
| |
lvovand | Дата: Среда, 29 Июня 2011, 16:10 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| с точки зрения высшей математики может и неправильно, но по сути то, чем не устраивает?
Разработка и продвижение сайтов. Дизайн
|
|
| |
webstrict666 | Дата: Среда, 29 Июня 2011, 16:50 | Сообщение # 5 |
постоянный участник
Сейчас нет на сайте
| математика и формулы... думаю вы умете высчитывать процент? допустим есть вещь 1 - в базе, она имеет 3 поля: ID - int - целочисленное значение - авто инкрумент Name - varchar10 - название вещи dropproc - int11 - процент выпода
Теперь составим нашу формулу (она написана на скорую руку.) $RandProc = mt_rand(10,100); //Вычесляем случайное число от 10 до 100 далее формула для вычисления выйграл человек или нет (зы так сказать игра в ящик): ($RandProc/$dropproc)*100
далее делаешь проверочку ... обычной логикой
http://GAMESKROL.RU Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально !
|
|
| |
lvovand | Дата: Среда, 29 Июня 2011, 17:44 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| может такой еще вариант сойдет, если вещей не очень много
задаем массив ключи 0 - ничего 1,2,3 - вещи
значения - вероятность выпадения
$ar = Array(0=>10, 1=>20, 2=>40, 3=>80); //составляем и заполняем вспомогательный массив foreach($ar as $key=>$val){ for($i=0; $i<$val; $i++){ $ar2[] = $key; } }
//перемешиваем вспомогательный массив и берем потом у него первое значение shuffle($ar2); echo $ar2[0];
Разработка и продвижение сайтов. Дизайн
|
|
| |
wInDx | Дата: Среда, 29 Июня 2011, 18:37 | Сообщение # 7 |
почетный гость
Сейчас нет на сайте
| webstrict666, и что ето будет? Quote ($RandProc/$dropproc)*100 Допустим шанс что вещь выпадет 50!Рандомное чило выпало допустим 60! (60/50)*100=120! И что ето...?
Ubi Concordia Ibi Victoria
|
|
| |
Assasin | Дата: Среда, 29 Июня 2011, 19:30 | Сообщение # 8 |
web-coder
Сейчас нет на сайте
| Получается % выпадения вещи 120%, значит вещь выпала. Все что выше 100 то вещь выпала.
|
|
| |
wInDx | Дата: Четверг, 30 Июня 2011, 00:06 | Сообщение # 9 |
почетный гость
Сейчас нет на сайте
| И еще вопросик!Как рандомно вытягивать из базы значения?Вот например есть две вещи 1 и 2 допустим сила у них (одинаковая) 100 и 100 когда я вытягиваю указываю WHERE сила=100, и оно вытягиваЕт ту которая первая в базе!А как зделать рандомно???
Ubi Concordia Ibi Victoria
|
|
| |
lvovand | Дата: Четверг, 30 Июня 2011, 00:49 | Сообщение # 10 |
старожил
Сейчас нет на сайте
| либо получай сначала id записей, из них рандомно выбирай id одной записи и по ней получай значение из базы, либо ORDER BY RAND() указывать в sql-запросе
Разработка и продвижение сайтов. Дизайн
|
|
| |
Assasin | Дата: Четверг, 30 Июня 2011, 12:15 | Сообщение # 11 |
web-coder
Сейчас нет на сайте
| RAND() лучше в БД не использовать, т.к. он создает временную таблицу и с нее рандомно выбирает значения, а это доп. нагрузка на сервер. При том если вещей много и пользователи одновременно сделают этот запрос, то нагрузка будет очень большая. Можно попробовать так: Code $rnd = rand(1, mysql_result(count_query("SELECT MAX(id_item) FROM items"),0));
|
|
| |
wInDx | Дата: Четверг, 30 Июня 2011, 17:01 | Сообщение # 12 |
почетный гость
Сейчас нет на сайте
| Fatal Error undefined function count-query!У меня на телефоне нету знака подчеркивание поетому я написал "-"!Не работает count-query
Ubi Concordia Ibi Victoria
|
|
| |
Assasin | Дата: Четверг, 30 Июня 2011, 18:08 | Сообщение # 13 |
web-coder
Сейчас нет на сайте
| Сорри, это моя функция, напиши вместо нее mysql_query
|
|
| |
QWER56 | Дата: Среда, 06 Июля 2011, 21:19 | Сообщение # 14 |
старожил
Сейчас нет на сайте
| $num=rand(10);
Используй на здоровье.
ConsMark - поисковик по интернет магазинам.
|
|
| |
webstrict666 | Дата: Пятница, 08 Июля 2011, 21:06 | Сообщение # 15 |
постоянный участник
Сейчас нет на сайте
| незнания убивает мозг) QWER56, почитайте о mt_rand и rand ... не надо распространять Аля 80)
http://GAMESKROL.RU Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально !
|
|
| |