AngularJS: Динамический диапазон для select

Категории: HowTo

С сервера приходит максимальное и минимальное значение в выпадающем списке. Нам нужно построить по этим значениям сам список.

Делаем фильтр

angular.module('app').filter('range', function() {  
 return function(input, min, max) {  
 min = parseInt(min, 10);  
 max = parseInt(max, 10);  
 for (var i = min; i < max; i++)  
 input.push(i);  
 return input;  
 };  
});

И делаем динамический селект.

<select ng-model="value" ng-options="item for item in [] | range:min:max"></select>

JSFiddle

Центрировать абсолютный div

Категории: HowTo

Горизонтально:

margin-left:-<half width>px; left:50%;

Вертикально и горизонтально (только если задана ширина и высота)

.Absolute-Center { margin: auto; position: absolute; top: 0; left: 0; bottom: 0; right: 0; }

Числа с произвольным законом распределения

Категории: HowTo JFF

Иногда бывает ну очень нужно сгенерировать какое-то число с вероятностью его появления, к примеру, 0.1. Или любым другим законом распределения.

Как поступать в таком случае?

Нам известно, что генераторы случайных и псевдослучайных чисел плются значениями, которые распределены по случайному закону. Но нам-то что до этого?

Нам нужно генерировать X с указанной вероятностью (0.1)

Вспоминаем, что сумма вероятностей всех событий - 1. Отлично. Теперь нам нужно задать вектор значений (среди которых будет и X), где сумма вероятностей появления элементов равна 1.

И дальше нам нужно отобразить этот вектор на некоторый интервал [1, 10^k].

Посмотрим на примере, зачем это надо.

Если вероятность появления числа X := 0.1, а Y := 0.9 (сумма = 1), то нам нужно два вектора значений: от 1 до 1 и от 2 до 10.

Зачем? Мы будем генерировать числа с диапазоне от 1 до 10. С вероятностью 0,1 числа попадут в интервал от 1 до 1 :) и с вероятностью 0,9 - от 2 до 10.

С таким де успехом мы можем взять интервалы [1, 10] и [11, 100] и генерировать числа в диапазоне 1:100. Главное, чтобы максимальное число равнялось 10^k и k было больше или равно максимальному количеству десятичных цифр в вероятностях.

Пример кода на python

Python: Backreferences в re

Категории: HowTo

Вот все время забываю, что обратные ссылки в регулярных выражениях надо либо писать экранируя слеш.

>>> import re
>>> re.sub('(d)\1*', '\1', '111112222233333')
'123'

Либо писать в raw-строках

>>> import re
>>> re.sub(r'(d)1*', r'1', '111112222233333')
'123'