Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Duji-Buji

Frischling

  • »Duji-Buji« ist der Autor dieses Themas

Beiträge: 20

Wohnort: Osnabrück

  • Private Nachricht senden

1

14.10.2009, 19:32

Zufallszahl leicht erstellen

Hi,
ich bin gerade dabei, ein kleines Spiel zu programmiern. Dafür brauch ich allerdings ein paar Zufallszahlen, für die ich kein großen Aufwand machen muss. Meine Frage: Was ist der einfachste Weg, zuffälig generierte Zahlen zu erstellen? :?:
MfG
EDIT: Ich benutze C++ ;)

GR-PA

Treue Seele

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

2

14.10.2009, 19:37

Wenn du C++ benutzt (davon gehe ich jetzt einfach mal aus, weil du keine Sprache genannt hast), dann ist der einfachste Weg das Benutzen der Funktionen srand() und rand().
http://www.cplusplus.com/reference/clibrary/cstdlib/rand/
Signaturen werden überbewertet

goldfisch007

Alter Hase

Beiträge: 446

Wohnort: Süden von Berlin

  • Private Nachricht senden

3

14.10.2009, 19:44

wenn du windows benutzt:

windows.h includieren und dann meines wissens mit

C-/C++-Quelltext

1
2
3
4
5
6
7
//bindet ne lib ein --> kannst du auch in den projekteinstellungen machen


#pragma comment (lib, "winmm.lib")

srand (timeGetTime());//zum initialisieren


int Zufallszahl=(rand()%Bereich)+1


mit srand legst du die Startzahl für den Zufallsalgo fest.

und die 2. zeile erstellt dir dann eine Zufallszahl, welche in dem int gespeichert wurde.

mit der variablen "bereich" legst du den Bereich fest, in welchem deine Zufallszahl sein soll und "+1"ist zur Wertkorrektur nötig....
Wir bauen auf und reißen nieder, so ham wir Arbeit ima wieder...
--------------------
http://www.piratenpartei.de/tmp/images/Slogans_5_0.png
--------------------
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender, geklaut von Helmut xD)

Duji-Buji

Frischling

  • »Duji-Buji« ist der Autor dieses Themas

Beiträge: 20

Wohnort: Osnabrück

  • Private Nachricht senden

4

14.10.2009, 19:52

Zitat von »"goldfisch007"«

wenn du windows benutzt:

windows.h includieren und dann meines wissens mit

C-/C++-Quelltext

1
2
3
4
5
6
7
//bindet ne lib ein --> kannst du auch in den projekteinstellungen machen


#pragma comment (lib, "winmm.lib")

srand (timeGetTime());//zum initialisieren


int Zufallszahl=(rand()%Bereich)+1


mit srand legst du die Startzahl für den Zufallsalgo fest.

und die 2. zeile erstellt dir dann eine Zufallszahl, welche in dem int gespeichert wurde.

mit der variablen "bereich" legst du den Bereich fest, in welchem deine Zufallszahl sein soll und "+1"ist zur Wertkorrektur nötig....


Aber dann würde das Programm nur unter Windows laufen, oder? Und geht das andere überhaupt auf allen Betriebsystemen?
MfG

5

14.10.2009, 19:55

http://www.c-plusplus.de/forum/viewtopic-var-t-is-244661.html

http://magazin.c-plusplus.de/artikel/Zuf%E4lle%20gibt%60sFragezeichenAusrufezeichen%20-%20Funktionen%20rund%20um%20rand%2C%20Random%20und%20den%20Zufall

Es empfiehlt sich immer, die Sachen, die man benutzt auch zu verstehen.
Lieber dumm fragen, als dumm bleiben!

6

14.10.2009, 20:13

Zitat von »"goldfisch007"«

wenn du windows benutzt: [...]
Ich mag es immer wieder, wenn jemand eine unportablere, eingeschränktere Variante für ein Problem vorschlägt, das genauso gut mit der Standardbibliothek lösbar ist. ;)

<ctime> reicht längstens zum Initialisieren des Zufallsgenerators.

Stazer

Alter Hase

Beiträge: 468

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

7

14.10.2009, 21:01

ich persönlich kenn da nur die srand methode für windows
kannst aber auch sfml für randomfunktionen nutzen ( das find ich allerdings bissl übel nur für diese eine funktion eine lib extra einzubinden )
oder alternativ mit den time funktionen eine eigene funktion schreiben ;)

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

8

14.10.2009, 21:07

Für die gehobenere Zufalls Wünsche sei hier auch noch auf boost::randomverwiesen.

goldfisch007

Alter Hase

Beiträge: 446

Wohnort: Süden von Berlin

  • Private Nachricht senden

9

14.10.2009, 21:15

Zitat von »"Nexus"«

Zitat von »"goldfisch007"«

wenn du windows benutzt: [...]
Ich mag es immer wieder, wenn jemand eine unportablere, eingeschränktere Variante für ein Problem vorschlägt, das genauso gut mit der Standardbibliothek lösbar ist. ;)

<ctime> reicht längstens zum Initialisieren des Zufallsgenerators.



sry aba das war halt die MIR bekannte methode und ich dachte ich sag sie ihm... weil sowas besser als nix is (dachte ich)
aba da ich sowas demnächst dann auch ma verwenden werde guck ich mich dann nochma um...
Wir bauen auf und reißen nieder, so ham wir Arbeit ima wieder...
--------------------
http://www.piratenpartei.de/tmp/images/Slogans_5_0.png
--------------------
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender, geklaut von Helmut xD)

Duji-Buji

Frischling

  • »Duji-Buji« ist der Autor dieses Themas

Beiträge: 20

Wohnort: Osnabrück

  • Private Nachricht senden

10

15.10.2009, 00:20

Also erstmal danke für die vielen Antworten, aber ich hab noch ein Problem: Ich hab mich entschlossen, die <ctime> zu verwenden. Aber da dacht ich mir, dass ich sie, wenn ich sie schon hab, auch (fast) voll nutzen möchte. Desshalb such ich nun eine Funktion, die einfach nur ne bestimmte Zeit wartet (z.B. "wait(5000)". Dann würde sie 5000 ms warten).
MfG

Werbeanzeige