, een goede source code wordt gegeven, een schone uitvoering van afzonderlijke gegevens voor de opstelling van de cumulatieve verdeling van taken.Het CIO in de vorm van de beschrijvende statistische basis.,, (dit artikel verscheen voor het eerst in Delphi, gebruikers, niet - officiële communicatie, distributie, T), van dit artikel, en een goede source code wordt gegeven, een schone uitvoering van afzonderlijke gegevens voor de opstelling van de cumulatieve verdeling van functie.Het CIO in de vorm van de beschrijvende statistische basis.,,, T - automatisch toe te voegen aan de "afval" van de data - elementen van de accumulatie van het CIO, of je kunt de pre - analyse van de gegevens die de grenzen van de definitie van de doos.De automatische verlenging van de indeling van het CIO doos de beste gegevens (maar Cool zien HTTP://soort vergadering www.connix. COM /~ btober /sorteren. Htm).In de meeste gevallen, zal het niet van tevoren bestellen gegevens goed werk.,,, afkomstig tstringlist, dus je kan het gebruik van de eigenschap van een definitie van een tekst waarin elk "bin", bijvoorbeeld, de string, [0]:='jan "[1]:= akkoord;,,,,,'feb";,,,,,,,,]:= akkoord [11'dec ";,,, zodat de flexibiliteit ter ondersteuning van je klas in de uitvoering van de verschillende interfaces (let op, dit is niet een gebruikersinterface vergadering, het is een soort" slechts ", biedt een unieke statistische taken die door je... De tenuitvoerlegging van De gebruikersinterface, specifiek voor uw aanvraag).,,, van de gegevens die de prestaties en de raming van de totale gemiddelde (op basis van het CIO).,,, gevallen van projecten is opgenomen.,,, (* * * * * * ****************************************************************} {de ontwikkeling van afzonderlijke categorieën,,,,,, de cumulatieve verdelingsfunctie} {Copyright © 2000, Berend, M. 10.Alle rechten voorbehouden.De auteur, {},, e - mail: [email protected]} {}, andere bestanddelen in de,,,, (HTTP://www.connix. COM /~ btober /Delphi. Htm} {******************************************************************},,,,,,,,, (,, cumulatieve verdelingsfunctie van het CIO; (CDF) voor de continue. Echt, willekeurige X, gedefinieerd als een f (x), F (x), P = (x < = X), dat wil zeggen de waarschijnlijkheid van X < = X, in soortgelijke situaties, afzonderlijke definitie van,,, T. Verdeling van de categorieën voor het genereren van Een de empirische CdF, verzameling van gegevens en de berekening van de waarde van de hoeveelheid van het monster door, verzamelen van gegevens, als een groep afzonderlijke "afval".,,, dan weet jeCkly get A om een foto van A.,,, de klasse descends van TStringList, dus je kan het gebruik van de goederen te definiëren, touw, touw describing a text.'bin'.,,,,,, String[0]: ='Jan'; String[1]: ='Feb';,,.,,.,,.,, String[11]: ='Dec';,,,,, -.,,,,, de toepassingen, de klassen;,,,,, TDistributionItem =, type, klasse, (TObject), particuliere,,,,,, {Upper FBin: dubbele; beperking van bin},,,,,, FCount: LongInt;:,,,, de fabrikant, het dubbele waarde; Count:LongInt);,,, functie, Accumulate (waarde het dubbele): LongInt;,,, eigendom, Bin: dubbele, lezen, FBin;,,, eigendom, Tel: LongInt, Read, FCount;,,,,,,,,, TDistribution =, klasse, (TStringList), privé,,,,De functie van de dubbele getmean:,,,,,,,,,, getTotal: dubbele; de,,,,,,, de fabrikant, de verschrikkelijke, het scheppen van; schade; voor;,,,,,,,, duidelijke procedures, de functie en de accumulatie van (waarde: dubbele): LongInt;,,, de functie, het AddObject (totaal, string; aobject:TObject): bedragen; voor;,,,,,,,, freeobjects; - programma, het programma, de (index: gehele getal; en een waarde: tdistributionitem);,,, functie, freeobject (index: gehele getallen;,,,) wordt verkregen door de (index: de gehele): tdistributionitem;,,, eigendom, betekent: dubbele, lezen, getmean;,,, eigendom, object (index: gehele]:tdistributionitem, lezen, schrijven en dat;,,, eigendom, totaal: dubbele, lees getTotal;,,,,,,, en, tot slot, de uitvoering;on,,,,constructor, TDistributionItem.Create(Value: Double;Count:LongInt);,,begin,,, ,inherited, Create;,, FBin := Value;,, FCount:=Count;,,end,;,,,function, TDistributionItem.Accumulate(Value: Double):LongInt;,,begin,,, Result:=-1;,, ,if, Value<=FBin ,then,{Increment count of bin when Value<=x},,, ,begin,,, inc(FCount);,, Result:=FCount;,, ,end,;,,end,;,,,,, constructor, TDistribution.Create;,,begin,,, ,inherited, Create;,,end,;,,,destructor, TDistribution.Destroy;,,begin,,, Clear;,, ,inherited, Destroy;,,end,;,,,function, TDistribution.AddObject(,const, S: ,string,; AObject:TObject):Integer;,,{Add a 'bin' to the CDF, in proper order},, , , ,var, i:Integer;,,begin,,, {, vinden de invoeging van een nieuwe "CONTAINER".This is just before the smallest 'bin',, which exceeds size of new 'bin'.,, },,, Result:=Count;,, ,if, Count>0 ,then,,, ,for, i:=pred(Count) ,downto, 0 ,do,,, ,if, TDistributionItem(AObject).Bin<Objects[i].Bin ,then,,, Result:=i;,,, ,if, Result<0 ,then,,, Result:=,inherited, AddObject(S,AObject) ,{If no such 'bin', append new one},,, ,else,,, InsertObject(Result,S,AObject) ,{Insert new bin before next biggest},,,end,;,,,function, TDistribution.Accumulate(Value:Double):LongInt;,,{Count this data value into the cdf},,,var,,, i: LongInt;,,begin,,, ,if, Count=0 ,then,,, AddObject('',TDistributionItem.Create(Value,0)) ,{Must have at least one 'bin'},,, ,else,if, Value>Objects[pred(Count)].Bin ,then,,, ,{If Value exceeds largest 'bin', then add new one that IS big enough},,, AddObject('',TDistributionItem.Create(Value,Objects[pred(Count)].Count));,,, ,for, i:=0 ,to, pred(Count) ,do,,, Result:=Objects[i].Accumulate(Value);,,end,;,,,function, TDistribution.Get(Index:Integer):TDistributionItem;,,begin,,, Result:=TDistributionItem(,inherited, Objects[Index]);,,end,;,,,function, TDistribution.FreeObject(Index:Integer):Integer;,,begin,,, Result:=-1;,, ,if, Index >= Count ,then, Exit;,, ,if, Objects[Index] <> ,nil,then,,, ,begin,,, Objects[Index].Free;,, Objects[Index]:=,nil,;,, ,end,;,, Delete(Index);,,, ,if, Index>=Count ,then,,, Result:=pred(Count),, ,else,if, Count=0 ,then,,, Result:=-1,, ,else,,, Result:=Index;,,end,;,,,procedure, TDistribution.FreeObjects;,,var, i:Integer;,,begin,,, ,if, Count > 0 ,then,,, ,for, i:=pred(Count) ,downto, 0 ,do,,, FreeObject(i);,,end,;,,,procedure, TDistribution.Put(Index:Integer; ,const, Value:TDistributionItem);,,begin,,, ,inherited, Objects[Index]:=Value;,,end,;,,,procedure, TDistribution.Clear;,,begin,,, FreeObjects;,, ,inherited, Clear;,,end,;,,,function, TDistribution.GetTotal:Double;,,{This is an ESTIMATE of the actual sample total},,,var, i: integer;,,begin,,, Result:=0;,, ,if, Count = 0 ,then, Exit;,,, Result:=Objects[0].Bin*Objects[0].Count;,, ,for, i:=1 ,to, pred(Count) ,do,,, Result:=Result+(Objects[i].Bin*(ObjEcts[i].Count-Objects[pred (i)].Count);,,, (,, * * * * * * * Dit is een alternatieve manier te berekenen, met Result:=Objects[0].Bin*Objects[0].Count; * * * * * * *,,,, voor i:=1 ging (tel) te doen, Result:=Result,, + (Objects[i].Bin + Objects[pred (i),].Bin), * * * * * * * (Objects[i].Count - Objects[pred (i)].Count); Result:=Result/2.0;,,,,,,,,,,,,,,,, TDistribution.GetMean: dubbele functie; {This is een ESTIMATE van de werkelijke monster, ik mean},,,,,,,, Result:=0.0; als Count> 0,...,,, Result:=GetTotal/Objects[pred (tel),].Count; het einde,,,,,,.,,,,,,, naar de uitvoering, het programma,,,,.,,, de toepassingen, WinCRT, CdF;,,,,,, Data1:, totaal -, [1..10] van Real= (66,73,73,81,81,81,81,85,85,89);,,, (,, noot: deze gegevensverzameling is pre-sorted.Nog niet, de distributie, de indeling en de gegevens, maar je kan niet een goede CdF, tenzij je van tevoren CdF doos.Dit geldt met name voor verzameling van gegevens, als eerste element is de grootste, (proberen door de herschikking van de gegevens hierboven)because automatic,, addition of bins will add a single bin into which ALL data,, will be counted.,, },,,,var,,, i,j:Word;,,,begin,,, ,with, TDistribution.Create ,do,,, ,begin,,, ,for, i:=1 ,to, 10 ,do,,, Accumulate(Data1[i]);,,, writeln('Mean = ', Mean:6:4);,, writeln('Total = ', Total:6:4);,,, {Print out quantitative summary},,, ,for, i := 0 ,to, pred(Count) ,do,,, writeln(Objects[i].Bin:6:2,#44,Objects[i].Count,#44,Objects[i].Count/Objects[pred(Count)].Count:6:3);,,, {Print out crude 'histogram'},,, ,for, i := 0 ,to, pred(Count) ,do,,, ,begin,,, ,for, j:=1 ,to, trunc(40*Objects[i].Count/Objects[pred(Count)].Count) ,do,,, write('*');,, writeln;,, ,end,,,,,,,,,,,,,,,,,,,,,,,,,.,,,