Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » 20. Virtualrästel (anfänger - Fortgeschrittene)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] > 3 < [ 4 ]
020
02.05.2003, 13:54 Uhr
~0xdeadbeef
Gast


Aber gut, virtual - wenn du den random-shuffle so liebst, as hältst du davon?

C++:
#include <stdlib.h>
#include <stdio.h>
#include <sys/time.h>

#define SCHNITT     (2)
#define VEREINIGUNG (3)

#define MIN (1)
#define MAX (26)

const char* const MENGENNAMEN[] = {"Menge 1", "Menge 2", "Schnittmenge", "Vereinigungsmenge"};

int main(int argc, char* argv[]){
    int i, j, k, anzahl[2] = {0};
    char menge[4][MAX] = {{0}, {0}, {0}, {0}},
        shuffled_array[MAX],
        c;
  
    srand(time(0)); //seed setzen
    for(j = 0; j < MAX; ++j)
        shuffled_array[j] = j;

    for(i = 0; i < 2; ++i) {
        do {
            printf("Mächtigkeit %s (%d - %d): ", MENGENNAMEN[i], MIN, MAX);
            scanf("%d", &anzahl[i]);
        } while(anzahl[i] < MIN || anzahl[i] > MAX);

        for(j = 0; j < MAX; ++j) {
            k = rand() % 25;
            c = shuffled_array[j];
            shuffled_array[j] = shuffled_array[k];
            shuffled_array[k] = c;
        }

        for(j = 0; j < anzahl[i]; ++j) {
            menge[i][shuffled_array[j]] = 'A' + shuffled_array[j];
        }
    }
    
    for(i = 0; i < MAX; i++){
        menge[SCHNITT][i] = menge[0][i] & menge[1][i];
        menge[VEREINIGUNG][i] = menge[0][i] | menge[1][i];
    }
    
    for(i = 0; i < 4; ++i) {
        printf("\n%s: ", MENGENNAMEN[i]);
        for(j = 0; j < MAX; ++j)
            printf("%c", menge[i][j]);
    }
    printf("\n\n");

    return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
021
02.05.2003, 14:20 Uhr
virtual
Sexiest Bit alive
(Operator)


Nett, aber warum "k = rand() % 25"? Wird da das 'Z' (aka 25) Nicht ein wenig bevorzugt? - Nachdem erstmalig gemischt wurde, ist das 'Z' garantiert nicht mehr an der ursprünglichen Stelle zu finden. Eine Aussage, die für alle übrigen Elemente nicht zutreffend ist. Mit anderen Worten: Wen du die erste Menge mit 25 Buchstaben bildest, ist 'Z' garantiert einer von ihnen. In meinen Augen ein Bug.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 02.05.2003 um 14:23 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
022
02.05.2003, 14:23 Uhr
~0xdeadbeef
Gast


Ja, gut. krand() % MAX, ok? Tipfeeler, tut mir leid.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
023
02.05.2003, 14:24 Uhr
virtual
Sexiest Bit alive
(Operator)


Jetzt bin ich zufrieden
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
024
02.05.2003, 14:26 Uhr
~0xdeadbeef
Gast


k = rand() % MAX;

Jetzt aber.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
025
02.05.2003, 14:32 Uhr
virtual
Sexiest Bit alive
(Operator)


@Heiko
bzgl. Deiner Fragen srand und so sein dir die FAQ ans Herz gelegt:
www.fun-soft.de/index.php?file=/forum/showtopic.php?threadid=1075&time=1051825248
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
026
02.05.2003, 15:09 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@virtual
ja, habe ich schon gelesen.
Das was ich meinte war halt nur das es mit dem "Compi-Zufi" tendenziel "unwahrscheinlicher" ist als in Realität, das mehrmals hintereinander die gleiche Zahl gewürfelt wird.
Die Compi-Verteilung hat halt noch ich nenne es mal so ein art gedächtnis welche zahlen schon einmal dran waren. Damit bekomme ich zwar eine Art gleichverteilung, aber die Realität kann ich nicht wirklich gut abbilden. Am besten ist wahrscheinlich man holt sich den Zufi mittels eines aussen angschlossen Gerätes (irgendein rauschen) ins Programm.

Gruss Heiko
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
027
02.05.2003, 15:52 Uhr
virtual
Sexiest Bit alive
(Operator)


Du meinst mit "Rauschen" www.random.org?

Hm, wie hoch ist denn Die Wahrscheinlichkeit, daß aus N Elementen in der Realität zweimal hintereinander die gleichen Zahlen gezogen werden?

Ich glaub 1/N * 1/N, oder Vertue ich mich da jetzt ganz gewaltig?
Dann zeigt das folgende Programm, daß die real zu erwartende Verteilung nicht so ewig weit von der künstlichen entfernt ist:

C++:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


#define RANGE 20
#define LOOPS 100000

int main()
{
    int letztes = -1;
    int doppler = 0;
    int i;
    int zufall;

    srand(time(NULL));

    for(i=1; i<=LOOPS; ++i)
    {
        zufall = rand()%RANGE;
        if (zufall==letztes)
        {
            ++doppler;
        }
        letztes = zufall;
    }
    printf("Häüfigkeit der Doppler: Tatsächlich: %9.7g%; erwartet: %9.7g%\n",
           (100.0*doppler)/(RANGE*LOOPS),
           100.0/(RANGE*RANGE));
}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 02.05.2003 um 16:07 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
028
02.05.2003, 17:14 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@virtual
die Wahrscheinlichkeit ist sogar 1/N (bei Gleichverteilung und einfacher wiederholung) weil es ja keine Rolle spielt auf welche Zahl sich das gerade bezieht. also bei n-facher wiederholung wäre das dann (1/n)hoch n-1 mal.

Ps.: Verdammt wie schnell entwickelt ihr denn immer ständig neu Programme.
ich vermute mal das das bei euch auch so ist das das Forum nur nebenbei läuft und ihr mal einen kurzen Blick reinwerft und dann an euer "richtigen" Aufgabe weiterarbeitet.

Wie lange programiierst du denn schon? Wie lange muss ich den regelmäßig programmieren bis ich auch in diese "weiss sofort eine Lösung für alle Problem Sphäre" vorstossen kann?

Gruss Heiko
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
029
02.05.2003, 17:51 Uhr
~0xdeadbeef
Gast


Diese Sphäre dauert lange, und da bin zumindest ich auch (noch) nicht angekommen. Später wird es beim Programmieren wichtiger, sich in den APIs, die man verwendet, auszukennen. Bei gut durchdachten APIs wie der STL, Qt oder der Java-Klassenbibliothek JFC ist das nicht weiter kompliziert, aber die MFC (Microsoft Foundation Classes), COM, das Windows API, die VCL (Borland) und so weiter können doch sehr ermüdend sein.

Hier geht es um logische Probleme, die vielleicht ein bisschen Denken, aber wenig Rumgepfriemel erfordern. Ich kann dir garnicht sagen, wie entspannend das ist, wenn man gerade zwei Stunden in der MSDN nach einem Anhaltspunkt dafür gesucht hat, warum man Laufzeitasserts kriegt, wenn man versucht, die Größe einer Instanz der Klasse CStatic aus den MFC zur Laufzeit zu verändern, und warum die Klasse eine entsprechende Methode anbietet, obwohl das generell nicht geht, und vor allem, warum Microsoft Leute, die offensichtlich nicht die geringste Ahnung von Objektorientierung haben, dazu angestellt hat, ein C-API, dass von Leuten, die offensichtlich nicht die geringste Ahnung von C hatten, um ein Pascal-API, dass noch aus CP/M-Zeiten stammt und richtig antik und unbrauchbar ist, gebaut wurde, in eine C++-Klassenbibliothek zu pressen.
Oder nachdem man zwei Tage damit verbracht hat, einen Teil des COM-APIs, das noch eine Ecke grausamer ist, in eine Form zu pressen, mit der man einigermaßen arbeiten kann. Ich sag nur IDispatch...

Wenn man in die Abgründe der Programmierung geschaut hat, ist das hier so ähnlich wie Ferien.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] > 3 < [ 4 ]     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: