Ben bir e-ticaret sitesi oluşturma, ve ben yarım uygun gruba veritabanından çekilir bir ürünlerini sıralamak için iyi bir algoritma geliştirilmesi sorun yaşıyorum. Ben sadece 4 içine yüksek fiyatı bölünmesi ve bu kapalı her grubu dayandırarak denedim. Ben de ortalama etrafında dayalı standart sapmaları çalıştı. Her iki ürün kullanışlı bir filtreleme seçeneği olmadığı, içine düşeceği fiyat aralıkları ile sonuçlanabilir.
Ben de ürün almak çeyrekleri denedim, ama benim sorunum fiyatı 1 $ öğeleri 4000 $ arasında değişmektedir olmasıdır. 4000 $ satmak, ve çok daha az önemlidir, ama onlar benim sonuçları çarpıtan tutmak hemen hemen hiç.
Herhangi bir düşünce? Ben istatistikler sınıfta daha çok dikkat etmeliydim ...
Update:
Ben yöntemler biraz birleştirerek sona erdi. Ben dörttebirlik / kova yöntemi kullanılır, ama o fiyat grupları daha fazla sayıda görünür, içinde belirli aralıklar hardcoding tarafından biraz hacklendi.
//Price range algorithm
sort($prices);
//Divide the number of prices into four groups
$quartilelength = count($prices)/4;
//Round to the nearest ...
$simplifier = 10;
//Get the total range of the prices
$range = max($prices)-min($prices);
//Assuming we actually are working with multiple prices
if ($range>0 )
{
// If there is a decent spread in price, and there are a decent number of prices, give more price groups
if ($range>20 && count($prices) > 10)
{
$priceranges[0] = floor($prices[floor($quartilelength)]/$simplifier)*$simplifier;
}
// Always grab the median price
$priceranges[1] = floor($prices[floor($quartilelength*2)]/$simplifier)*$simplifier;
// If there is a decent spread in price, and there are a decent number of prices, give more price groups
if ($range>20 && count($this->data->prices) > 10)
{
$priceranges[2] = floor($prices[floor($quartilelength*3)]/$simplifier)*$simplifier;
}
}