Случайное распределение данных

Я нашел проблему: я должен был использовать json_encode($body) вместо http_build_query($body) и заголовок следующим образом:

      curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Authorization: Bearer .....',
        'accept: application/json',
        'content-type: application/json',
      ));
5
задан 5 revs, 3 users 100% 23 October 2015 в 10:58
поделиться

4 ответа

Всегда существует возможность, что они рядом друг с другом, если Вы делаете это действительно случайный :)

Но то, Что я сделал бы:

  1. Вы имеете N строки реальных данных и x из управляющей информации
  2. Для получения индекса строки, необходимо вставить i- th управляют строкой, я использовал бы: N/(x+1) * i + r, где r некоторое случайное число, отличающееся для каждой из строк управления, небольших по сравнению с N/x. Выберите любой способ определить r, это может быть или гауссово или даже плоское распределение. i индекс строки управления, таким образом, это 1<=i<x
  3. Таким образом, можно быть уверены, что Вы избегаете конденсации своих строк управления в одном единственном месте. Также можно быть уверены, что они не будут в регулярных расстояниях друг от друга.
3
ответ дан 15 December 2019 в 06:38
поделиться

Вот моя мысль. Почему Вы только не циклично выполняетесь через существующие строки, и "бросают монетку", чтобы каждая строка решила, вставите ли Вы случайные данные там.

for (int i=0; i<numberOfExistingRows; i++)
{    
    int r = random();
    if (r > 0.5)
    {
        InsertRandomData();
    }    
}

Это должно дать Вам хорошее случайное распределение всюду по данным.

0
ответ дан 15 December 2019 в 06:38
поделиться

Если реальные данные являются большими или намного больше, чем управляющая информация, просто генерируйте интервалы межприбытия для своей управляющей информации.

Так выберите случайный интервал, скопируйте это много строк реальных данных, вставьте управляющую информацию, повторитесь, пока не закончено. Как выбрать тот случайный интервал?

Я рекомендовал бы использовать гауссово, отклоняются со средним набором к реальному размеру данных, разделенному на размер управляющей информации, бывшие из которых могли оцениваться при необходимости, а не измеряться или предполагаться известные. Установите стандартное отклонение этого гауссова на основе того, сколько "распространенный" Вы готовы терпеть. Меньший stddev означает, что распределение более с эксцессом выше нормального означает более трудное соблюдение универсального интервала. Больший stdev означает больше platykurtic распределения и более свободного соблюдения универсального интервала.

Теперь что относительно первых и последних разделов файла? Это: что относительно вставки управляющей информации в самом начале или очень конце? Одна вещь, которую можно сделать, состоит в том, чтобы придумать оценки особого случая для них..., но хороший прием следующие: запустите свой "индекс" в реальные данные в минус половина гауссова среднего и генерируйте свое первое, отклоняются. Не производите реальные данные, пока Ваш "индекс" в реальные данные не будет законен. Симметричный прием в конце данных должен также работать вполне хорошо (просто: продолжайте генерировать, отклоняется, пока Вы не достигаете "индекса", по крайней мере, половина гауссова среднего вне конца реальных данных. Если индекс непосредственно перед тем, как это было от конца, генерируют данные в конце.

Вы хотите посмотреть на больше, чем просто статистика: это полезно в разработке алгоритма для этого вида вещи посмотреть на элементарную теорию массового обслуживания. Посмотрите Википедию или Автобус Turing, который имеет хорошую, короткую главу по предмету, заголовком которого является "Моделирование".

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

0
ответ дан 15 December 2019 в 06:38
поделиться

Движение с 3 000 реальных строк данных и 20 строками управления для следующего примера (я лучше с примером, чем с английским языком),

Если бы необходимо было распространить 20 строк управления максимально равномерно между 3 000 реальных строк данных, то Вы вставили бы один в каждой 150-й реальной строке данных. Так выберите то число, 150, для следующего индекса вставки.
a) Генерируйте случайное число между 0 и 150 и вычтите его из индекса вставки
b) Вставьте строку управления там.
c) Вставка увеличения индексирует 150
d) Повторитесь на шаге a)

Конечно, это - очень сырой алгоритм, и требуется несколько улучшений :)

0
ответ дан 15 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: