09. september 2002 - 22:48Der er
6 kommentarer og 1 løsning
Find max frekvens af et array of double
Kender nogen en hurtig funktion, til at finde det tal i et array of double, der optræder med den største hyppighed (= den statistiske term Mode) i arrayet. Eks.: talrækken: 3,6,8,9,6,2 her er mode = 6, da den værdi optræder flest gange.
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
>>lanstorp Hehe... Er du også træt af den besked? Du skal bare læse den en gang og så sætte Eksperten til automatisk at logge dig ind. Hvis du så skifter IP, så får du den igen, men så er det bare at åbne den igen! :)
Omkring dit problem, så har jeg ikke så mange andre løsninger end at loope hele array'et i gennem og så finde det sådan...
Hvis der er en der har en hurtigere løsning, så lytter jeg gerne med! :)
Har faktisk en funktion, der finde Medianen, hvor arrayet er sorteret, den kan måske udvides til også at returnere Mode-værdien:
function MedianDouble(const dZ : array of Double) : Double; function CompareDouble(Double1, Double2 : Pointer) : Integer; var D1, D2 : Double; begin D1 := Double(Double1^); D2 := Double(Double2^);
if D1 < D2 then Result := -1 else if D1 > D2 then Result := 1 else Result := 0; end; var iNumPoints : Integer; Numbers : TList; i : Integer; dTemp1, dTemp2 : Double; begin iNumPoints := High(dZ) + 1;
Numbers := TList.Create; try for i := 0 to iNumPoints - 1 do Numbers.Add(@dZ[i]);
Numbers.Sort(@CompareDouble);
if Odd(iNumPoints) then Result := Double(Numbers[iNumPoints div 2]^) else begin dTemp1 := Double(Numbers[(iNumPoints div 2)-1]^); dTemp2 := Double(Numbers[(iNumPoints div 2)]^); Result := (dTemp1 + dTemp2) / 2; end; finally Numbers.Free; end; end;
En median er det miderste tal i en sorteret talrække. Er antallet af tal lige er det gennemsnittet af de to miderste tal. Medianen er ved nogle tal fordelingerne mere relevant end gennemsnittet.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.