Forum
Tipps
News
Menu-Icon

C++ Zufallswert

Hallo, wie kann man in C++ einen Zufallswert ausgeben? Ich wollte mir nämlich eine Würfelfunktion erstellen mit Zahlen zwischen 1 und 6.


Antworten zu C++ Zufallswert:

Guck dir mal rand() bzw srand() an. Das Ergebnis kann man dann modulo 6 nehmen und das wars schon:
// get randomNumber
rval = ( randomNumber % 6 ) + 1;

Hey, ich habe mir mittlerweise auch schon mehrere TUT's angeschaut, aber ich verstehe es einfach nicht!
Könntest du mir vielleicht den kompletten Quellcode einmal eintippen?
Wäre echt cool, vielleicht verstehe ich es dann

Danke für deine Hilfe. Ich habe es jetzt geschafft!!!  8)
 
Da wären nur noch 2 Probleme: Ich wollte jetzt eine Datei schreiben, bei der ich zwischen 1x und 5x würfeln aussuchen kann, aber egal was ich mir aussuche, er gibt es nur 1x aus. Und ich wollte mit "\f" auf eine neue Seite überspringe, doch dies macht er nicht, er gibt nur ein "weiblich-Zeichen" aus.


Zitat

#include <conio.h>
#include <iostream>
#include <stdlib.h>

 //Min_Zahl + (rand() % (Max_Zahl - Min_Zahl + 1))
 
using namespace std;
int wuerfeln;
main()
{
   
    srand(time(0));
    rand();
    cout<<"Dies ist ein Wuerfelprogramm."<<endl;
    cout<<"Sie koennen jetzt zwischen 1x, 2x... 5x wuerfeln waehlen."<<endl<<endl;
    cout<<"1x wuerfeln: 1"<<endl;
    cout<<"2x wuerfeln: 2"<<endl;
    cout<<"3x wuerfeln: 3"<<endl;
    cout<<"4x wuerfeln: 4"<<endl;
    cout<<"5x wuerfeln: 5"<<endl;
    cin>>wuerfeln;
    cout<<endl<<endl<<endl<<endl;
    cout<<"\f";
   
    switch(wuerfeln)
    {
         case '1': goto einmal;
         case '2': goto zweimal;
         case '3': goto dreimal;
         case '4': goto viermal;
         case '5': goto fuenfmal;
         }
   
    einmal:
    {cout<<""<<1 + ( rand() % ( 6 - 1 + 1 ) )<<""<<endl<<endl;
     cout<<"Damit haben Sie das Wuerfel-Programm erfolgreich abgeschlossen."<<endl;
     cout<<"Bitte druecken Sie die Return-Taste"<<endl;
     getch();
     return(0);}
    zweimal:
    {cout<<""<<1 + ( rand() % ( 6 - 1 + 1 ) )<<""<<endl<<endl;
     cout<<""<<1 + ( rand() % ( 6 - 1 + 1 ) )<<""<<endl<<endl;
     cout<<"Damit haben Sie das Wuerfel-Programm erfolgreich abgeschlossen."<<endl;
     cout<<"Bitte druecken Sie die Return-Taste"<<endl;
     getch();
     return(0);}
     dreimal:
    {cout<<""<<1 + ( rand() % ( 6 - 1 + 1 ) )<<""<<endl<<endl;
     cout<<""<<1 + ( rand() % ( 6 - 1 + 1 ) )<<""<<endl<<endl;
     cout<<""<<1 + ( rand() % ( 6 - 1 + 1 ) )<<""<<endl<<endl;
     cout<<"Damit haben Sie das Wuerfel-Programm erfolgreich abgeschlossen."<<endl;
     cout<<"Bitte druecken Sie die Return-Taste"<<endl;
     getch();
     return(0);}
    viermal:
    {cout<<""<<1 + ( rand() % ( 6 - 1 + 1 ) )<<""<<endl<<endl;
     cout<<""<<1 + ( rand() % ( 6 - 1 + 1 ) )<<""<<endl<<endl;
     cout<<""<<1 + ( rand() % ( 6 - 1 + 1 ) )<<""<<endl<<endl;
     cout<<""<<1 + ( rand() % ( 6 - 1 + 1 ) )<<""<<endl<<endl;
     cout<<"Damit haben Sie das Wuerfel-Programm erfolgreich abgeschlossen."<<endl;
     cout<<"Bitte druecken Sie die Return-Taste"<<endl;
     getch();
     return(0);}
    fuenfmal:
    {cout<<""<<1 + ( rand() % ( 6 - 1 + 1 ) )<<""<<endl<<endl;
     cout<<""<<1 + ( rand() % ( 6 - 1 + 1 ) )<<""<<endl<<endl;
     cout<<""<<1 + ( rand() % ( 6 - 1 + 1 ) )<<""<<endl<<endl;
     cout<<""<<1 + ( rand() % ( 6 - 1 + 1 ) )<<""<<endl<<endl;
     cout<<""<<1 + ( rand() % ( 6 - 1 + 1 ) )<<""<<endl<<endl;
     cout<<"Damit haben Sie das Wuerfel-Programm erfolgreich abgeschlossen."<<endl;
     cout<<"Bitte druecken Sie die Return-Taste"<<endl;
     getch();
     return(0);}
     
}


 
« Letzte Änderung: 07.05.07, 16:30:31 von Speedy_92 »

Warum so umstaendlich?

for( int i=0; i<wuerfeln; ++i ){
    cout<<""<<1 + ( rand() % ( 6 - 1 + 1 ) )<<""<<endl<<endl;
}
cout<<"Damit haben Sie das Wuerfel-Programm erfolgreich bgeschlossen."<<endl;
cout<<"Bitte druecken Sie die Return-Taste"<<endl;
getch();
return(0);
...ersetzt alles ab dem switch   :o

Einfach nur geil!  :-* Danke!
Nur noch meine zweite Frage:
 

Zitat

Und ich wollte mit "\f" auf eine neue Seite überspringe, doch dies macht er nicht, er gibt nur ein "weiblich-Zeichen" aus.

Hmm keine Ahnung. Ich nehme mal an, dass du den Screen nach jedem durchlauf löschen willst?
Dann probier mal
system("cls"); (Nur unter Windows)
Evtl bietet deine conio.h auch eigene Funktionen wie
clrscr()
Ist aber Compilerabhängig - was nutzt du? Borland? Microsoft?

Ich nutze Dev-CPP...
Ich probiere es aber lieber erst mal mit den Befehlen aus.


« ICQ kann nicht mehr installiert werden.Eclipseproblem »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
C++
C++ ist eine von der ISO standardisierte Programmiersprache und eine erweiterte Form von C zur objektorientierten, generischen und prozeduralen Programmierung. Weitestgeh...

Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...

Auslagerungsdatei
Die Auslagerungsdatei, auch bekannt als virtueller Speicher, ist ein wichtiges Element im Windows-Betriebssystem. Sie dient als Erweiterung des physischen Arbeitsspeicher...