округление датировок

У меня есть таблица базы данных в SQL Server, которая содержит дату начала проекта.

На странице веб-статуса я хочу показать, сколько дней / недель / месяцев проект был запущен, единицы в зависимости от продолжительности. Таким образом, до 21 дня я показывал дни, до 7 недель я показывал недели, в противном случае показывал полные месяцы. Так что я получаю дни, j (i, j: 1..n) / ∀ (i, j) a i, j ∈ ℤ и 0 ≤ a i, j ≤ k и Det [a] ≠ 0

, но a i, j также должны быть случайными после равномерного распределения в [0, k].

В своем текущем воплощении проблема имеет n 300, k≅ 100.

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

Проблема в том, что эта проверка для матриц 300x300 занимает примерно 2 секунды, а я не могу себе этого позволить.

Конечно, я могу построить строки, выбрав случайную первую строку и затем построив последовательные ортогональные строки, но я не уверен, как гарантировать, что эти строки будут иметь свои элементы в соответствии с равномерным распределением в [0, k].

Я ищу решение в системе Mathematica, но также приветствуется более быстрый алгоритм генерации матриц.

NB> Условие U [0, k] означает, что для набора матриц каждая позиция (i, j) в наборе должна следовать равномерному распределению.

8
задан Dr. belisarius 24 August 2011 в 04:16
поделиться