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

Dofter

Treue Seele

  • »Dofter« ist der Autor dieses Themas

Beiträge: 159

Wohnort: im wunderbaren EBERMANNSTADT

Beruf: Schüler^^

  • Private Nachricht senden

1

15.04.2007, 17:54

Frage zu tbIntRandom()

Hallo zusammen,

ich brauch in meinem Programm eine Zufallszahl, und da ich schon mit der TRI-Base Engine arbeite, hab ich mir gedacht auch gleich die vorgefertigte Funktion - tbIntRandom() zu nehemen. So weit so gut, aber es gibt natürlich auch ein Problem:
Diese Funktion liefert zwar zufalls zahlen, aber als erstes immer die 2:
Wenn ich die Funktion in eine Schleife nehme, und mir das ergebnis anzeigen lasse, kommt als erste Zahl immer die 2, aber da ich nur eine Zufallszahl brauchen, sollte es nicht jedesmal die 2 sein.

C-/C++-Quelltext

1
2
while (1)
     int r = tbIntRandom(1,20); // als erstes immer 2;


vielleicht wisst ihr etwas was ich machen könnte, um das Problem zu beheben, falls nicht muss ich es ohne die TriBase Funktion machen, weil ohne geht es.

mfg Dofter

P.S. was mir jetzt noch aufgefallen ist, es ist auch immer die selbe zahlenfolge, bei mir: 2 - 8- 15 - ..., die bei erneuten Programmstart bei den "Zufallszahlen" auftritt.
"Wo kämen wir hin, wenn alle sagten, wo kämen wir hin, und keiner ginge,
um zu sehen, wohin wir kämen, wenn wir gingen"

2

15.04.2007, 18:02

naja guck dir die Implementierung an ... ruf vorher mal srand(time(NULL)); auf ...

ne andere möglichkeit für Zufallszahlen bei so nem kleinen Bereich:
leg dir einen std::vector an und nimm std.:random_shuffle..

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <vector>
#include <algorithm>
#include <iostream>

int main()
{
    std::vector<unsigned short> vec_items;
    for (unsigned short n = 0; n < 20; ++n)
        vec_items.push_back(n);

    std::random_shuffle(vec_items.begin(), vec_items.end());
    std::cout << (*vec_items.begin()) << std::endl;
}
... hab es allerdings nicht getest .... auch wenn es funktionieren sollte. Verzichtest halt auf Funktionen aus den C Headern und nimmst nur Punktionen ausm Standard :)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Dofter

Treue Seele

  • »Dofter« ist der Autor dieses Themas

Beiträge: 159

Wohnort: im wunderbaren EBERMANNSTADT

Beruf: Schüler^^

  • Private Nachricht senden

3

15.04.2007, 18:53

aber in tbInit steht das doch schon so drinnen:

C-/C++-Quelltext

1
srand(timeGetTime() % 1000);
"Wo kämen wir hin, wenn alle sagten, wo kämen wir hin, und keiner ginge,
um zu sehen, wohin wir kämen, wenn wir gingen"

4

15.04.2007, 19:59

Hmm ich kenn mich mit der Engine nicht aus ... das wusste ich nicht. Sorry. Aber das verhalten tritt nur auf, wenn srand nicht mit time odg. initialisiert wurde. Hast du denn tbInit auch aufgerufen?

aja... hab dir nen Artikel dazu rausgesucht: http://www.c-plusplus.de/forum/viewtopic-var-t-is-172876.html
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Dofter

Treue Seele

  • »Dofter« ist der Autor dieses Themas

Beiträge: 159

Wohnort: im wunderbaren EBERMANNSTADT

Beruf: Schüler^^

  • Private Nachricht senden

5

19.04.2007, 11:54

sry, dass ich nicht so schnell antworten konnte, aber ich war seit dem 15. von der Schule aus weg.

Frage:
Kann es sein, dass wenn ich eine Random Zahl in einem anderen Thread verwenden will, dass ich den Zufallsgenerator nochmals initialisieren muss? Wie ich das nähmlich gemacht hab, ging alles wunderbar.
"Wo kämen wir hin, wenn alle sagten, wo kämen wir hin, und keiner ginge,
um zu sehen, wohin wir kämen, wenn wir gingen"

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

6

20.04.2007, 12:05

könnte sein

Werbeanzeige