- 1
- 2
- 3
- 4
- 5
- 6
- 7
<?
$arr = array(2,1,1,1,1);
echo $arr[rand(0,count($arr)-1)];
/*вероятность двойки 20%, 5 чисел = 100%, 1 число = 20%. Так и делается, ничего не говнокод.
И в других языках по этому же принципу.
*/
?>
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+159
<?
$arr = array(2,1,1,1,1);
echo $arr[rand(0,count($arr)-1)];
/*вероятность двойки 20%, 5 чисел = 100%, 1 число = 20%. Так и делается, ничего не говнокод.
И в других языках по этому же принципу.
*/
?>
Человек спросить, как сделать псевдорандом с вероятностью выпадения числа в 20 процентов. Вот что ему ответили.
но табличное задание вероятностей дело не новое и само по себе не говно.
если мне надо нелинейные вероятности, я как правило мулю какую функцию (типично интерполяцией) которая выдает нужное мне распределение на [0,1) и применяю ее к drand48(). ну а дальше как обычно.
рандом с нелинейным распределением вероятностей результата.
в общем случае, рандом должен (и это есть качество хорошего ранодома) выдавать каждое из возможных значений с одинаковой вероятностью.
одинаковые вероятности в каждой точке == график есть прямая линия == линейное распределение.
нелинейное распределение: график есть не прямая линия, а кривая.
С чем я да могу согласится с кодом из ОП, так это то, что для эмуляции выборки без повторений с небольшим диапазоном можно использовать массив / кучу / дерево, но гораздо универсальнее использовать гипер-геометрические формулы, т.как из них можно получить некоторые данные с меньшим усилием (типа вероятносетй, что желаемый результат окажется в каком-то диапазоне).
т.е. bell curve так называется вовсе не потому, что похожа на колокол? о как
> закон Ципфа так же известный как экспоненциальное распределение
"работа лампы osram, так же известная, как электричество"
врет он все
нет никакой кривой Белла
а чеж тогда р(к) = а/к? Экспоненту от гиперболы не отличаем?
>> Mathew's law
а можно коммунистическое название?
р(к)/р(к+1) = a, a>1
все равно гипербола
Законы Мэтью
http://www.kinopoisk.ru/film/722748/
Zipf law - это вообще евристика, "экспоненциальная" тут не относится к тому, как получены результаты, а на что похожа кривая. Точно так же, как можно, например, с помощью косинуса (если правильно помню, то (1 - cos(x)) / 2pi) бриблизительно описать нормальную кривую.
Другие примеры: распределение Галтона, распределение Парито.
>>Парито.
Ну так и че ж ты тут делаешь? Околесицу несешь, в показаниях путаешься.
>> а на что похожа кривая.
я так вижу
а я лишь пешка в руках великого математического аппарата вселенной.
евреи таки повсюду
- Здгавствуйте, догогой пгедставитель внеземной цивилизации!
Инопланетянин:
- Ни фига себе, и здесь они!
- Папа, а кто у нас в роду был?
- ну белые были, бурые. Еврей один был. Куда ж без них...
- А вы не чешите их, и всё пройдет.
http://ideone.com/lstLho
Ну и можно среди выделенных блоков памяти поискать, если настолько важно.
только неясно как это решает проблему
кто может помешать разместить другой, чужой объект по этому же адресу, в интервале между удалением нашего и попыткой обращения по сохраненному указателю?
т.е. ты предлагаешь перед каждым разыменованием указателя уточнять, какого он там типа?
или это делается за нас, независимо, хотим ли мы этого
в одном треде объект создается, указатель/ссылка на него передается другому треду
когда первый тред решает объект уничтожить, второй тред (и => приложение) не должен от этого пострадать, когда он решится обратиться к этому объекту
сделать это можно:
1) разрешив первому треду лишь уменьшить счетчик ссылок на объекте (и автоуничтожить объект, когда этот счетчик действительно станет равным нулю),
2) разрешив первому треду взаправду уничтожить объект, но тогда обеспечив второму треду достоверный механизм проверки, что именно переданный ему объект до сих пор жив или уже мертв, и, если жив, останется гарантированно жить, пока второй тред его реально использует некоторое время,
3) сборщик мусора (что, фактически, обобщение варианта 1)
так что же предлагает дельфи?
надеяться на is, as, his, зануление деструктором и Вирта?
а насколько это вообще потокобезопасно - проверить по косвенным признакам, что объект, предположительно, свой и хороший, и начать с ним работу, в то время, как первый тред его всё же убьет?
надеяться на is, as, his, зануление деструктором и Вирта?
Тут все просто.
1. Берем
2. Реализуем.
Хоть со счетчиком ссылок, хоть без. Нужна потокобезопасность? Ну так мютекс добавить, и в деструкторе его лочить. Или спинлок.
ох жесткачь
и подвесить тред 1
теперь мне понятно, почему великолепный дельфиний TOAD за много денег ТАК тормозит и через раз падает при попытке восстановления сессии с ораклом
> Тут все просто.
ну т.е. ничего не предлагает, вообще
поэтому-то ни один дельфин и не суется в многопоточность
на 8-ядерных процах выжимает производительность селерона
зато его приложение заработает на Windows 95
Да ну? Вон Стертор сколько примеров нам накидал...
Вот только деструктор в делфи сам не вызовется... RAII то только на "интерфейсах" и строках работает.
А если деструктор не вызвался, значит и объект в порядке, никаких проблем.
я неспроста сделал свою ремарку
не честно
закон Ципфа - дискретный на конечном множестве
экспоненциальное распределение - непрерывное на [0, +inf)
непрерывный родственник распределения Ципфа - закон Парето
экспоненциальное распределение принадлежит семейству экспоненциальных распределений (ты, видимо, подразумевал именно семейство ), и Парето войдет это семейство, только если зафиксировать его нижнюю границу
слишком много приходится делать обобщений и допущений, чтобы взять и набросить "закон Ципфа, широко известный как экспоненциальное распределение"
но спасибо, пришлось повспоминать материал тервера, забытый много лет назад
Закон Ципфа — закономерность распределения частоты слов естественного языка
не надо ляля
>>она же кривая Белла
????Gaussian bell curve
колоколообразная кривая Гаусса
Ну да, если значений не так много. А для большого количества я делал массив, в котором лежали P(x <= i) (забыл, как они по-умному называются) и искал в нем случайное число двоичным поиском. Примерно так: