000
22.04.2018, 04:40 Uhr
Jones
|
Hallo, ich möchte als erste Programmiersprache gerne C erlernen und habe hier meinen ersten eigenen Code. Um schlechte Angewohnheiten gar nicht erst entstehen zu lassen, würde ich mich über Kritik freuen.
mfg Jones
C++: |
/* Dieses Projekt, test die Funktion "rand()" durch eine Wahrscheinlichkeitsrechnung (Droprate) */
#include<stdio.h> #include<stdlib.h> #include<time.h> #include <stdbool.h>
//gibt true wieder wenn die Zufallszahl innerhalb des Prozentbereiches liegt ansonsten false bool droprate(int prozent) { bool jein =((rand() % 100)+1 <= prozent); return jein; }
int warscheinlichkeit( int durchlaeufe,int wiederholungen, int proz_warscheinlichkeit) { int cou = 0; //zählt die true Werte float pro[durchlaeufe]; //speichert die errechneten % Werte von jedem Durchlauf srand(time(NULL)); //timer für rand auf NULL setzen
for (int k = 0; k<durchlaeufe; k++) { for (int i = 0; i<wiederholungen; i++) { if (droprate(proz_warscheinlichkeit)) { cou++; //zählt nur true Werte } }
float proz = (float)(100 * cou) /wiederholungen; //errechnet die prozentuale Anzahl der true Werte pro[k]=proz;
//variablen reset proz = 0; cou =0; } //alle Ergebnisse zusammenzählen und den Durchschnitt ausgeben float gesamt = 0; for (int i =0; i<durchlaeufe; i++) { gesamt +=pro[i]; } printf("Bei %d Wiederholungen und %d Durchläufen, ergibt der Durchschnitt %f%%\n",wiederholungen,durchlaeufe,gesamt/durchlaeufe);
return 0;
}
main() {
//200 Durchläufe mit 2000 Versuchen und 20% Wahrscheinlichkeit auf true warscheinlichkeit(200,20000,20);
}
|
Edit:
Ist es möglich das als einen Ternary Operator darzustellen?
C++: |
if (droprate(proz_warscheinlichkeit)) { cou++; //zählt nur true Werte }
|
Dieser Post wurde am 22.04.2018 um 04:47 Uhr von Jones editiert. |