Einfacher gehts vermutlich nicht:

# ein einfacher 32-bittiger XorShift Algorithmus ...
def prng_(state):
    state ^= state << 13
    state ^= state >> 7
    state ^= state << 17

    return state & 0xFFffFFff

# ... verpackt in einen Generator ...
def prng(count, seed=0x1234567890):
    state = seed

    for i in range(32):
        state = prng_(state ^ i)

    for i in range(count):
        state = prng_(state)

        yield state

# ... demonstriert in einer Schleife:
for num in prng(5):
    print('0x%08X' % num)

Der Algorithmus sieht zwar einfach aus, erzeugt allerdings Pseudozufallszahlen, die zwar eine kleinere Periode als MT haben, dem in ihrer Qualität aber in nichts nachstehen.

PS: Diese unfassbar unfähigen Entwickler von GF, die diesen ekelerregend verpfuschten Editor zusammen geschustert haben, sollte man an den Eiern aufbaumeln!

Ernsthaft ... "Deutschlands größte Frage- und Antwortcommunity" groß rumposaunen, und dann das Geld anstatt in fähige Entwickler, lieber in hippe Webdeveloper mit Scala und Photoshopkenntnissen investieren.

Fickt euch! Ich kündige meinen Account jetzt und tue mir die ganze Scheiße auf eurer Dreckspfuschseite nicht mehr an.

Lernt mal ordentliche Software zu schreiben!

Un-fass-bar ...

PPS: Sorry, Fragensteller! Der Rant gilt ausdrücklich NICHT dir! ;)

...zur Antwort

Reiß dich mal zusammen, gibt wesentlich Schlimmeres.

Ich habe gleich zwei Erkrankungen, von denen mir jede einzelne einen GDB von 100 beschehrt, aber deshalb muss man noch lange nicht zum Jammerlappen mutieren.

Such dir ein Hobby, anstelle in Selbstmitleid zu versinken!

...zur Antwort

Von HTML 2.0 bis 4.0 gab es teilweise sehr merkwürdige Syntax, die damals von SGML übernommen wurde:

Das ist <b/fetter/ Text.

Da diese sog. "Shorttags" aber nicht sonderlich lesbar sind, vor allem, wenn sie geschachtelt werden, galten sie von Anfang an als zu vermeiden.

Browser haben sie m. W. n. nur ganz am Anfang unterstützt, dann wieder nicht, dann Mitte der 90er wieder, dann Ende der 90er wieder nicht, dann Mitte der 2000er nochmal, und seitdem wieder nicht. Ein ständiges Hin und Her. :)

Ansonsten galten bestimmte Tags als implizit schließend und implizit vorhanden:

<title>foobar</title>
<p>Absatz 1
<p>Absatz 2

Der Title-Tag öffnet implizit automatisch einen Head-Tag und der P-Tag implizit automatisch einen Body-Tag. Der P-Tag muss nicht geschlossen werden, das geschieht ebenfalls implizit.

Das mit dem implizit Vorhandensein ist heute bei HTML5 auch noch so, ist aber Pfusch, denke ich. :)

Darüber hinaus gibt es noch einige weitere Eigenheiten, aber dazu wirst du dich durch die englischsprachigen Standards quälen müssen.

Bei HTML 2.0 war das m. M. n. sogar nur eine olle RFC. Auf Amazon kannst du alte Literatur kaufen, auch zum Thema DHTML, für Animationen bevor Flash aufkam, oder VRML noch lange bevor es ActiveX oder JavaApplets gab.

Spontan fällt mir auch der Rohrkrepierer Curl ein, der eigentlich besser als Flash war, aber sich genauso wenig wie Silverlight durchsetzen konnte. Aber das hat ja alles schon nichts mehr mit HTML zu tun.

Also: Bescchaffe dir einfach alte Bücher, die du auf Amazon gebraucht für einen Euro hinter her geworfen bekommst, und guck dir bei der Gelegenheit gleich nochmal DHTML an, falls dich das interessiert. :)

...zur Antwort

Ich habe bis vor einem halben Jahr als Freelancer an einem ML-Projekt im Audiobereich mitgearbeitet, und mein Stundensatz lag bei 280€.

Bei fiverr wirst du aber niemanden finden, der a) etwas kann und b) etwas auf sich hält bzw. c) nicht gerade am Hungertuch nagt.

Falls (!) du dort tatsächlich jemanden findest, dann wird es nur jemand sein, der die Python-API von Tensorflow bedienen kann, und das wars dann auch schon.

Wie teuer API-Zusammen-Klicker sind, weiß ich nicht, aber vernünftige Leute wirst du nur ab weit über 200€ pro Stunde finden.

Trotzdem viel Spaß bei deinem Projekt. :)

PS: Es gibt aber genügend interessierte und sehr fähige Studenten ... vielleicht findest du darunter ja jemanden. Die haben ja im Moment eh alle lange Weile wegen Corona. :)

...zur Antwort

Bei HTTPS wird der Domainname im Klartext vor dem Handshake übertragen.

Und die meisten VPN-Dienste werben zwar damit, nicht zu loggen, das ist aber gelogen. Insbesondere Nord-VPN und Cyberghost tun das.

Lies dazu bitte meine Antwort auf deine andere Frage für Details.

...zur Antwort

Ja, ein VPN-Dienst weiß immer, wohin du dich verbindest. Ob ihn das interessiert, bzw. ob es ausgewertet wird, ist eine andere Frage.

Und was viele Leute absolut gar nicht auf dem Radar haben: Bei HTTPS-Verbindungen über TLS wird der Domainname im Klartext (!) übertragen.

Wenn du zum Beispiel auf einen Massenhost mit einer einzigen IP und mehreren registrierten Domainnamen zugreifst, muss ein Auswerter auf Seiten des VPN-Anbieters also nicht mal raten, zu welcher Seite du dich verbindest, da im Header noch vor dem eigentlichen Handshake im Klartext ""www.XYZ.de" steht.

Und zum zweiten Teil deiner Frage: Ja, natürlich wird Quelle und Ziel kurzzeitig im Speicher gehalten, solange die Verbindung aufrecht gehalten wird, aber das nennt man nicht Logging. Ein "richtiges" Logging wäre, wenn alles in einer Datei gespeichert, und für längere Zeit (Stunden, Tage, Wochen, Monate) über die eigentliche Verbindung hinaus aufgehoben werden würde.

Viele Anbieter werben damit, ausdrücklich nicht zu loggen. Und die meisten davon lügen.

Es wird oft Nord-VPN und Cyberghost empfohlen, die - wenn ich mich recht erinnere - damit werben. Vor über einem Jahr hab ich mich mal damit befasst und tatsächlich die Nutzungsbedingungen von beiden Anbietern gelesen ... und zwar von vorne bis hinten ... das war sehr viel und hat lange gedauert.

Und bei beiden stand schwarz auf weiß drin, dass sie die Daten a) sowohl loggen, und b) auch weiter geben. Also fall bitte nicht auf Marketing-Bullshit rein, sondern lies einfach die Bedingungen.

Und selbst wenn, ich habe im Hinterkopf, dass Cyberghost angiebt, bei illegalen Aktivitiäten die Verbindungsdaten weiter zu geben. Das kann technisch ohne Logging gar nicht funkionieren, also allein daran siehst du schon mal was das ganze für ein Zirkus ist.

Fazit: Domainnamen werden auch bei HTTPS-Verbindungen im Klartext übertragen, ein Logging davon ist leicht möglich und ich wette 99% aller VPN-Anbieter loggen, auch wenn sie das auf den ersten Blick verneinen.

Trotzdem, mach keinen Mist im Internet und richte bitte keinen Schaden an! Anonymität ist ein hohes gut, und ich kann dich da voll und ganz verstehen, aber tue bitte nichts Kriminelles! Es gibt genügend andere harmlose Beschäftigungen!

...zur Antwort

Immer die exakt gleiche Frage. Alle paar Tage. Und zwar seit Jahren.

Leute, wenn ihr absolut unfähig dazu seid, eine Suchfunktion zu nutzen, dann ist Programmieren wohl nix für euch.

Und ich rieche sie schon ... die nächste Frage nach beliebigen, mit Pseudozufallszahlen gefüllten, Containern - ohne Dubletten - in drei, zwei, eins, ...

...zur Antwort

Einfach den WM direkt im Framebuffer laufen lassen.

Dann geht auch Firefox und Chromium.

Die Performance dürfte dann aber für Videos nicht mehr ausreichhen.

...zur Antwort

Vielleicht eine Anomalie im Raumzeit-Kontinuum. Liegt bestimmt an Corona. :)

...zur Antwort

Es geht nicht ums fernhalten, sondern ums beschimpft und geschlagen werden.

...zur Antwort

Benutze bitte die Suchfunktion!

ich glaube, hier auf GF gibt es KEINE andere Programmierfrage, die so häufig in so einer Regelmäßigkeit gestellt wird.

Jede Woche mindestens ein mal. Manchmal auch zwei bis drei mal.

Inzwischen gibt es diese Frage inkl. der immer gleichen Antworten mit Sicherheit weit über 100 mal auf dieser Plattform. (In Worten: Weit über Einundert mal ... und das ist durchaus wortwörtlich zu verstehen!)

Im Grunde füllst du nur ein Array mit allen verfügbaren Zahlen (in deinem Falle also 1 bis 49) und verwürfelst dieses. Auf Englisch heißt das Shuffling bzw. auf Denglisch shufflen. Danach nimmst du nur die ersten n Zahlen, die dich interessieren. (bei Lotto also die ersten 6) Dabei genügt es, die ersten n (also 6) Stellen des Arrays zu verwürfeln.

Such dir eine der zich oder gar hunderten Lösungen hier auf GF aus ... darunter sind auch welche für Java im oberen zweistelligen Bereich.

Viel Spaß! :)

...zur Antwort
Option 1

Wegen dieser Frage wurden schon Kriege geführt, also sei vorsichtig damit!

Man spricht nicht umsonst von den Editor-Wars, den Browser-Wars und natürlich den Codestyle-Wars.

Allerdings ist der erste Stil tatsächlich besser da er das gleiche wie der zweite, aber auf weniger Raum leistet. Einen Vorteil hat Stil 2 nicht.

Wenn du auf deinem Monitor 50 Zeilen Code anzeigst und nur 5 davon sind Zeilen mit einer öffnenden geschweiften Klammer, dann hast du damit schlicht und ergreifend 10% deines wertvollen Platzes vergeudet und hast dementsprechend weniger Code im Blick und musst häufiger hin und herscrollen, was auf Dauer einfach Zeit und damit Geld frisst.

Lies dir ruhig mal meinen Kommentar unter der Antwort von CSANecromancer durch, denn der hat es tatsächlich gewagt Stil Nummer Zwei zu favorisieren, was eine Schande ist. :)

...zur Antwort

Habe jetzt keine Zeit. Hier nur mal ganz kurz der Algorithmus zum finden des größten Elements eines Integerarrays, und zwar in effizient und sicher, mit Minidemo in der main()-Funktion:

#include <stddef.h> // NULL
#include <stdio.h> // fputs, printf, stderr
#include <stdlib.h> // EXIT_FAILURE, EXIT_SUCCESS, size_t

static inline int biggest_element(
    const int * const array,
    const size_t length,
    int * const result
) {
    if (NULL == array || 0ul == length) {
        return -1;
    }

    int biggest = array[0ul];
    
    for (size_t i = 1ul; i < length; ++i) {
        if (array[i] > biggest) {
            biggest = array[i];
        }
    }
    
    *result = biggest;

    return 0;
}

int main(void) {
    int result = EXIT_FAILURE;

    const int numbers[] = { 123, 31415, -23, 42 };
    int biggest = 0;

    if (0 == biggest_element(
        numbers,
        sizeof(numbers) / sizeof(*numbers),
        &biggest
    )) {
        printf("Biggest: %d\n", biggest);

        result = EXIT_SUCCESS;
    } else {
        fputs("ERROR: Bad array.\n", stderr);
    }

    return result;
}

Die merkwüridige Codeformatierung dient der besseren Lesbarkeit hier auf GF.

Das, was man als Algorithmus bezeichnen würde, ist eigentlich nur der Bereich um die Schleife herum, innerhalb von biggest_element().

Naja, schönen Tag noch! :)

...zur Antwort