- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
$probabilities=array();
$get_items=mysql_query("SELECT * FROM `items` WHERE `iid` IN(".mysql_real_escape_string($case['items']).") AND `status`='1' AND `count`>'0' ORDER BY `probability` DESC;");
while($item=mysql_fetch_assoc($get_items)){
$probabilities[$item['probability']]=0;
}
$dices=$probabilities;
for($pi=100;$pi>=0;$pi--){
foreach($probabilities as $probability=>$pstate){
if(rand(1, 2)==2){
if($pi<=$probability){
$dices[$probability]=$dices[$probability]+1;
}
}
}
}
arsort($dices, SORT_NUMERIC);
$probability=reset(array_keys($dices));
$get_prize=mysql_query("SELECT * FROM `items` WHERE `iid` IN(".mysql_real_escape_string($case['items']).") AND `status`='1' AND `count`>'0' AND `probability`='".$probability."' ORDER BY RAND() LIMIT 1;");
Написал с нуля на заказ движок для очередного детского говноказино (розыгрыш пикселей для игр в "Steam").
Заказчик умолял сделать возможность управления вероятностью выпадения того или иного предмета (в процентах), что я и сделал. Вышеприведённый алгоритм как раз отвечает за выбор приза в соответствии с прописанными в настройках вероятностями. Сейчас кажется, что решение не самое "изящное".
Есть, что заметить по поводу алгоритма?
А вообще, слишком толсто
Мне этот мусор неприятен. Я и между скобками, операторами и переменными-то пробелы не расставляю...
>>>"А вообще, слишком толсто"
Уже ищу свой тюбик с лубрикантом. Терпение, птенчик...
Чем он хорош? Зачем одни буквы в коде менять на другие?
PDO хорош только тем, что это унифицированная оболочка к разным СУБД. Однако, толку от этого мало, потому что при построении сложных систем всё равно приходится писать код, зависящий от СУБД.
Однородность 95% кода, которую вы почему-то записываете в хуйню. На это обычно отвечают классическим "часто ли ты менял базу данных в проекте после его начала, зачем тебе вообще совместимость с кучей движков баз данных?", поэтому я сразу задам контр-вопрос: мало ли на свете фреймворков, которые точатся сразу под кучу движков, и авторы которых в гробу видали писать одно и тоже для каждого движка и получают за счет этого 95% совместимости кода сразу со всем?
> при построении сложных систем всё равно приходится писать код, зависящий от СУБД.
в нормальных сложных системах существует разделение read/write model, в базе данных специально проектируются вьюхи/таблицы под чтение, и все запросы опять сводятся к простой четверке CRUD. Только иногда требуется какая-то сложная хуйня, которую придумал модный UX-специалист - типа геопоиска по полигону или нечеткого поиска - и в этом случае это все вообще надо снимать с базы данных, потому что база данных для человеческого поиска не предназначена (как бы туда не стримились побольше специальных индексов для нечеткого поиска).
В Perl есть DBI::DBD
В Python есть PEP 249
В Java есть JDBC
В .NET есть ADO.NET
и только пых кушает mysqli_query и радуется
>> в базе данных специально проектируются вьюхи/таблицы под чтение
К сожалению, это не всегда так. Мне тоже нравится работать с БД через вьюхи, но например Django ORM или Hibernate могут с этим поспорить.
Тем не менее, 80% кода можно унифицировать, и писать raw sql только для особых случаев
уже нет
Яху!!! Всего 20 лет понадобил0сь!
http://php.net/manual/ru/mysqli.query.php
Из этого примера сразу видно что ООП лучше процедурного подхода.
>>не испытываешь батхёрта, в отличие от ныне трендового JS. но
Если конечно ты не знаешь больше никаких языков кроме JS и PHP :)
>>это не помешало ему стать самым популярным языком для веба.
в те времена, когда выбор был между perl и Php:) выбор был понятен
Как только повылазили руби, груви, питон итд: так сразу и закочнилось
это логично
пробовал много чего не вебовского C/C++, Basic, Dephi/Pascal, Fox Pro, Assembler etc.
Пиздатый язык, обожаю разгребать говна на нем.
В _некоторых_ ситуациях такое название валидно, но и там лучше сказать: "такие языки как си и сиплюсплюс"
В некоторых городах есть еще такие люди, кстати, которые пишут и звонят на любую вакансию. Всегда. Обычно их знают HRы
хах, лол
Сравнивать "PHP" и "JS" — это как выбирать между говном и говном.
substr, substring
Подождите, посмотрю обсуждаемый код... AnalPerOral недавно вышел из криокамеры.
http://hackertyper.com/
Ada тоже
А форт, вроде, не наследник
Зато в форте типизации нет
Эту простыню я наваял, полагаешь, также лишь для того, чтобы кого-то затроллить?
https://ru.wikipedia.org/wiki/Рукопись_Войнича
У неподготовленного читателя очко может сжаться от каменно-холодной авторитетности голоса, коим ты излагаешь спизженные минуту назад из Интернета сведения.
Ты и вся твоя родня не оставили там ни пяди поверхности, на которую я мог бы ступить.
А что нам обсуждать-то ещё? То, как ты не можешь в тервер, prepared statements и нормальное форматирование кода?
Например, в этих строках алгоритма точно нет:
Вместо этого сразу можно было написать комментарий, чем заполнен массив $probabilities.
Если автор показал нам эти строки, значит, хочет, чтобы мы их обсудили.
> Нахуй мне ваш закон Ципфа?
Ха-ха-ха, добро пожаловать на ГК.
> $pi>=0;
Даже у предмета с "вероятностью" выпадения 0% есть шансы выпасть. Если он единственный, то этот шанс 1/2.
Если массив $dices будет пустой, то reset() вернёт FALSE, не приведёт ли это к кривому запросу в последней строке? Число со строкой же сравниваться будет. Впрочем, я не удивлюсь, если говномускуль съест это и не почешется.
Последний запрос (`count`>'0') не в транзакции, два конкурентных запроса могут получить по одному предмету с count = 1 В итоге: ты пишешь такие же дырявые сайты, как и те обезьяны, чьё творчество ты ломаешь
Мне однажды умный человек сказал, что это - плохо
Уж лучше "LIMIT FLOOR(RAND() * @COUNT), 1".
Хотя самый быстрый вариант — "WHERE `id` >= FLOOR(RAND() * @COUNT) LIMIT 1".
Здесь @COUNT — заранее посчитанное к-во строк.
эт если в айдишниках нет дыр
С дырами работать будет, если использовать неравенство вместо точного равенства, но распределение будет неравномерным: элемент, расположенный после большой дыры, будет выпадать чаще, чем нужно. Как вариант можно использовать точное равенство и повторять запрос, если выпало ноль элементов, но это уже некрасиво.
Прям как в Что? Где? Когда?