Я пытаюсь оценить общее количество результатов для запросов ядра приложения, которые будут возвращать большое количество результатов.
Чтобы сделать это, я назначил случайное число с плавающей точкой от 0 до 1 для каждого объекта. Затем я выполнил запрос, для которого я хотел оценить итоговые результаты, со следующими тремя настройками:
* I ordered by the random numbers that I had assigned in ascending order
* I set the offset to 1000
* I fetched only one entity
Затем я включил случайное значение сущностей, которое я назначил для этой цели, в следующее уравнение для оценки общих результатов (так как я использовал 1000 в качестве смещения выше, значение OFFSET в этом случае будет 1000):
1 / RANDOM * OFFSET
Идея состоит в том, что, поскольку каждому объекту назначено случайное число, и я сортирую по этому случайному числу, назначение случайного числа объекта должно быть пропорционально началу и концу результатов относительно его смещения (в этот случай 1000).
Проблема, с которой я сталкиваюсь, заключается в том, что полученные результаты дают мне низкие оценки. И оценки тем ниже, чем меньше смещение. Я ожидал, что чем меньше смещение, которое я использовал, тем менее точной должна быть оценка, но я думал, что предел погрешности будет как выше, так и ниже фактического числа результатов.
Ниже приведена таблица, демонстрирующая, о чем я говорю. Как вы можете видеть, прогнозы становятся более последовательными (точными) с увеличением смещения от 1000 до 5000. Но тогда предсказания, как и следовало ожидать, следуют полиному из 4 частей. (y = -5E-15x4 + 7E-10x3 - 3E-05x2 + 0,3781x + 51608).
Я здесь ошибаюсь, или стандартный генератор случайных чисел python не распределяет числа достаточно равномерно для этой цели?
Спасибо!
Edit:
Оказывается, эта проблема из-за моей ошибки. В другой части программы я собирал объекты с начала серии, выполнял операцию, а затем переназначал случайное число. Это привело к более плотному распределению случайных чисел к концу.
Я немного больше углубился в эту концепцию, устранил проблему и попробовал еще раз для другого запроса (поэтому число результатов отличается от приведенного выше). Я обнаружил, что эта идея может быть использована для оценки общих результатов для запроса. Следует отметить, что «ошибка» очень похожа на близкие смещения. Когда я делал точную диаграмму в Excel, я ожидал, что точность прогнозов при каждом смещении будет «облачной». Это означает, что смещения в самом начале будут производить более большое, менее плотное облако, которое будет сходиться к очень крошечной, плотной емкости вокруг фактического значения, когда смещения становятся больше. Это не то, что произошло, как вы можете видеть ниже в корзине того, как далеко были предсказания на каждом смещении. Там, где я думал, что будет облако точек, есть линия.
Это график максимума после каждого смещения. Например, максимальная ошибка для любого смещения после 10000 была менее 1%: