Используя Параметры в функции DATEADD Запроса

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

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

, Например, Вы могли проверить вывод 10 различных перестановок. Присвойте номер 0-51 каждой карте и возьмите среднее число карты в положении 6 через перестановки. Конвергентное среднее число 25.5, таким образом, Вы были бы удивлены видеть значение 1 здесь. Вы могли использовать центральную предельную теорему для получения оценки того, как, вероятно, каждое среднее число для данного положения.

, Но мы не должны останавливаться здесь! Поскольку этот алгоритм могла дурачить система, которая только чередуется между двумя перестановками, которые разработаны для предоставления точного среднего числа 25,5 в каждом положении. Как мы можем добиться большего успеха?

Мы ожидаем равномерное распределение (равная вероятность для любой данной карты) в каждом положении через различные перестановки. Таким образом среди 10 перестановок, мы могли попытаться проверить, что выбор 'выглядит универсальным'. Это - в основном просто уменьшенная версия исходной проблемы. Вы могли проверить, что стандартное отклонение выглядит разумным, что минута разумна, и макс. значение также. Вы могли также проверить, что другие значения, такие как самые близкие две карты (нашими присвоенными номерами), также имеют смысл.

, Но мы также не можем только добавить различные измерения как это до бесконечности, с тех пор, учитывая достаточную статистику, какая-то конкретная перестановка будет казаться очень маловероятной по некоторым причинам (например, это - одна из очень немногих перестановок, в которых карты X, Y, Z появляются в порядке). Таким образом, большой вопрос: который является правильным набором измерений для взятия? Здесь я должен признать, что не знаю лучший ответ. Однако при учитывании определенного приложения в виду можно выбрать хороший набор свойств/измерений, чтобы протестировать, и работать с теми - это, кажется, способ, которым шифровальщики обрабатывают вещи.

5
задан Damien 23 November 2009 в 14:07
поделиться

3 ответа

Похоже, вы передаете десятичное число в качестве третьего параметра вместо второго в DATEADD () , например:

DATEADD(day, GETDATE(), @days)

Хотя фрагмент в вопросе выглядит хорошо.

(Для большей ясности приведенный выше фрагмент является ошибкой. Это код, который приведет к возникновению ошибки из вопроса.)

4
ответ дан 18 December 2019 в 11:57
поделиться

Следующий код отлично работает здесь (SQL Server 2005, выполняется в Management Studio):

DECLARE @days decimal
SET @days = -10

SELECT DATEADD(day, @days, GETDATE())

, как и следующий

DECLARE @days decimal
SET @days = -10

SELECT * FROM myTable WHERE myDate > DATEADD(day, @days, GETDATE())

Итак, проблема должна быть где-то еще ...

0
ответ дан 18 December 2019 в 11:57
поделиться

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

DECLARE @days decimal (19,6)
SET @days = -10.3346

--result is actually irrelevant
IF CAST(40000.6 AS decimal (19,6)) > DATEADD(day, @days, GETDATE())
    SELECT 'yes'
ELSE
    SELECT 'no'

Даже попытка преобразовать десятичное число -10 в smalldatetime дает другую ошибку

SELECT CAST(CAST(-10 AS decimal (19,6)) AS smalldatetime)

Msg 8115, Level 16, State 2, Line 1
Arithmetic overflow error converting expression to data type smalldatetime.
0
ответ дан 18 December 2019 в 11:57
поделиться
Другие вопросы по тегам:

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