| 
				
				Как на 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   Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально !
 |  
| 
 | 
 |    |