Zufallsgenerator in C für 0-2

Schnelle objektorientierte, kompilierende Programmiersprache.
nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Zufallsgenerator in C für 0-2

Beitrag von nufan » Sa Jan 16, 2021 10:18 am

Digitalsheep hat geschrieben:
Fr Jan 15, 2021 11:18 pm
@nufan: Gerne befasse ich mich zu einem späteren Zeitpunkt mit Linux in einer vollen Installation, allerdings will ich mich jetzt auf C fokussieren und dann auf C++
Könnt ihr mir eine anfängerfreundliche Version empfehlen um sie vom Stick laufen zu lassen? Arch Linux erscheint mir da sehr aufwändig für den Einstieg

@moderator: soll ich diesen Beitrag, da er sich ja jetzt vom ursprünglichen Thema abgespalten hat eventuell in ein neues Thema schieben?
Ich würde dir für den Anfang eher Ubuntu oder Fedora empfehlen. Falls du noch Fragen dazu hast, eröffne bitte ein neues Thema.
Digitalsheep hat geschrieben:
Sa Jan 16, 2021 12:59 am
Folgende Seite sagt Folgendes: https://www.c-howto.de/tutorial/uebungen/teil-1/

"... deshalb muss auch die time.h eingebunden werden. Folgende Zeilen erstellen zwei Zufallszahlen zwischen -1 und 10 (also von 0-9)."

srand(time(NULL));
int zahl1 = rand() % 10;
int zahl2 = rand() % 10;

Mich hat die die Angabe -1 und 10 irritiert und irgendwann bin ich davon ausgegangen, dass der Autor wahrscheinlich eine null unterschlagen hat.
Also -10 bis 10
Ferner kann ich den Schluss dass sich aus -1 bis 10 also 0-9 ergibt nicht nachvollziehen. 1 bis 10 als 0-9 zu verstehen wäre nicht ein Problem
Die Aussage kann ich auch nicht nachvollziehen. In den beiden Zeilen ergeben sich Zahlen zwischen 0 und 9 (inklusive).
https://www.proggen.org/doku.php?id=c:lib:stdlib:rand
Digitalsheep hat geschrieben:
Sa Jan 16, 2021 3:05 am
Mittlerweile teste ich bei srand(time(0))

x= rand(%10),
y = rand(x%3) //und wiederum ein direktes
z = rand(%3)
Sollen die Aufrufe eigentlich srand() sein? rand() akzeptiert keine Parameter.
Digitalsheep hat geschrieben:
Sa Jan 16, 2021 3:05 am
Zur statistischen Erfassung versuche ich verschiedene Konstrukte.
z.b. möchte ich erfassen wie oft X verschiedene Werte{0-9} annimmt
...
int x
int xi[10] // Variablen global
...
switch(x){ //switch nach ermittlung x,y,z
case x:{ xi[x] +1;
}
}
...

funktioniert leider nicht.
Habt ihr einen Tip?
Also eine Möglichkeit einen dynamisches Case statt n cases zu definieren, und ob es einen Weg gibt den Indize eines Arrays auch variabel zu gestalten?
Wie wäre es damit?

Code: Alles auswählen

int xi[10] = {0};
int x = rand() % 10;
xi[x]++;
Digitalsheep hat geschrieben:
Sa Jan 16, 2021 3:05 am
@moderator: Wie markiere ich selber einen Codeblock im Forumsbeitrag? HTML-Tag?
Du musst den Text zwischen Code-Tags setzen. Im Editor hast du oben einen </> Button, der die entsprechenden Tags einfügt.

Digitalsheep
Beiträge: 8
Registriert: Sa Jan 09, 2021 10:36 pm

Re: Zufallsgenerator in C für 0-2

Beitrag von Digitalsheep » Sa Jan 16, 2021 5:34 pm

nufan hat geschrieben: Sollen die Aufrufe eigentlich srand() sein? rand() akzeptiert keine Parameter.
Also da war ich voll ziemlich übermüde... hätte natürlich heissen sollen rand()%10, rand()(x%3) und rand()%3.
So hab ich das natürlich in meinem Code auch.
Dont blame the code, blame the compiler!

Digitalsheep
Beiträge: 8
Registriert: Sa Jan 09, 2021 10:36 pm

Re: Zufallsgenerator in C für 0-2

Beitrag von Digitalsheep » Sa Jan 16, 2021 6:16 pm

nufan hat geschrieben:
Sa Jan 16, 2021 10:18 am
Wie wäre es damit?

Code: Alles auswählen

int xi[10] = {0};
int x = rand() % 10;
xi[x]++;
Funktioniert!!
war sogar mein zweiter Ansatz, scheiterte am Fehlen von ={0}.
Werde euer Tutorial nochmal von vorne durchackern.
Hatte zunächst mit C-A bis Z begonnen, aber euer Tutorial scheint mir besser geeignet um hands-on zu gehen.
Dont blame the code, blame the compiler!

Antworten