AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Brainstorming: Datei mit definierter Entropie erzeugen
Thema durchsuchen
Ansicht
Themen-Optionen

Brainstorming: Datei mit definierter Entropie erzeugen

Ein Thema von PeterPanino · begonnen am 30. Aug 2018 · letzter Beitrag vom 1. Sep 2018
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#31

AW: Brainstorming: Datei mit definierter Entropie erzeugen

  Alt 31. Aug 2018, 14:32
Kritik oder Wertungen sind während des Brainstormings nicht erlaubt.
Sag das bitte direkt dem anderen Teinehmer.
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#32

AW: Brainstorming: Datei mit definierter Entropie erzeugen

  Alt 31. Aug 2018, 14:56
Bevor ihr euch noch die Köpfe einschlagt, nehmt das hier als Diskussionsgrundlage
Delphi-Quellcode:
unit Unit1;

interface

uses
  System.Generics.Defaults, System.Generics.Collections, System.SysUtils,
  System.Math;

type
  TShannonEntropy = class
  public
    class function Calculate<T > ( const Source: array of T ): Double; overload;
    class function Calculate<T > ( const Source: array of T; const Comparer: IEqualityComparer<T> ): Double; overload;
  end;

implementation

{ TShannonEntropy }

class function TShannonEntropy.Calculate<T>( const Source: array of T; const Comparer: IEqualityComparer<T> ): Double;
var
  d: TDictionary<T, Integer>;
  i: Integer;
  p,r: Double;
begin
  d := TDictionary<T, Integer>.Create( Comparer );
  try
    for i := Low( Source ) to High( Source ) do
    begin
      if d.ContainsKey( Source[i] ) then
        d[Source[i]] := d[Source[i]] + 1
      else
        d.Add(Source[i],1);
    end;
    Result := 0;

    for i in d.Values do
    begin
      p := i / Length( Source );
      r := p * Log2( p );
      Result := Result + r;
    end;

    Result := -Result;

  finally
    FreeAndNil( d );
  end;
end;

class function TShannonEntropy.Calculate<T>( const Source: array of T ): Double;
begin
  Result := Calculate<T > ( Source, TEqualityComparer<T>.Default );
end;

end.
Das liefert dann mit
Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  Unit1 in 'Unit1.pas';

procedure Test;
var
  str: string;
  e: Double;
begin
  str := 'Grüne'#13#10'SPD'#13#10'FDP'#13#10'CSU'#13#10'CDU';
  e := TShannonEntropy.Calculate<Char > ( str.ToCharArray( ) );
  WriteLn( e );
end;

begin
  try
    Test;
  except
    on E: Exception do
      Writeln( E.ClassName, ': ', E.Message );
  end;
  ReadLn;
end.
auch die
Code:
 3.49366068968819E+0000
Grundlage dafür ist https://medium.com/udacity/shannon-e...s-5810d35d54b4
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#33

AW: Brainstorming: Datei mit definierter Entropie erzeugen

  Alt 31. Aug 2018, 15:09
@Schokohase

Faszinierend!! Vielen Dank!!
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#34

AW: Brainstorming: Datei mit definierter Entropie erzeugen

  Alt 31. Aug 2018, 15:12
Nun ja, es ist lesen, verstehen, tippen. Faszinierendes kann ich da nicht erkennen.

Wenn man sich noch fragt, wie denn ein Kollege hier mit gleichen Werten einen anderen Wert bekommen hat, der ändert einfach mal eine Zeile ab
Delphi-Quellcode:
  // e := TShannonEntropy.Calculate<Char> ( str.ToCharArray() );
  e := TShannonEntropy.Calculate<Byte> ( TEncoding.UTF8.GetBytes(str) );
und erhält wie durch ein Wunder
Code:
 3.59448250651942E+0000
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#35

AW: Brainstorming: Datei mit definierter Entropie erzeugen

  Alt 31. Aug 2018, 15:35
Ich war gerade fasziniert von dem genialen Video und wie gut das in dem Video erklärt wird und von den anderen Videos in diesem Channel. (Ein Lehrer mit pädagogischem Eifer ist von sowas halt fasziniert).
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#36

AW: Brainstorming: Datei mit definierter Entropie erzeugen

  Alt 31. Aug 2018, 22:18
*entfernt um Platz zu sparen*
Miniaturansicht angehängter Grafiken
screenshot-31_08.jpg  
Angehängte Dateien
Dateityp: 7z PEEntropy.7z (29,8 KB, 3x aufgerufen)
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 1. Sep 2018 um 21:31 Uhr) Grund: Anhang aktualisiert.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#37

AW: Brainstorming: Datei mit definierter Entropie erzeugen

  Alt 31. Aug 2018, 23:11
Ich habe ein für PE Dateien Entropy Berechner auch entschärft so das es jede Datei/Größe limitiert auf DWORD berechnet.
Könntest du bitte auf Deutsch schreiben, so dass man versteht, was du meinst? Danke.

Außerdem: Hast du noch immer nicht verstanden, dass das nichts mit PE-Dateien zu tun hat?

Geändert von PeterPanino (31. Aug 2018 um 23:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#38

AW: Brainstorming: Datei mit definierter Entropie erzeugen

  Alt 31. Aug 2018, 23:19
*entfernt um Platz zu sparen*
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 1. Sep 2018 um 21:31 Uhr)
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#39

AW: Brainstorming: Datei mit definierter Entropie erzeugen

  Alt 31. Aug 2018, 23:37
Die .exe Datei vor meinem Eingriff war limitiert auf Dateien des Typs PE/PE+, darin wiederum limitiert auf bestimmte Sektionen des PE-Headers.
Von was für einer ".exe Datei" schreibst du? Was für einen "Eingriff" meinst du? Kannst du dich in einer anderen Sprache besser ausdrücken? Du kannst mir gerne eine PN schreiben, wenn du mir dein Problem erklären möchtest. Ich weiß, dass Kommunikationsprobleme verschiedene Ursachen haben können. Ich kann gerne versuchen, dir zu helfen.

Geändert von PeterPanino (31. Aug 2018 um 23:45 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#40

AW: Brainstorming: Datei mit definierter Entropie erzeugen

  Alt 31. Aug 2018, 23:47
*entfernt um Platz zu sparen*
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 1. Sep 2018 um 21:31 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz