Rand-Problem

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

Fluppe

Betreff: Rand-Problem

BeitragSa, Aug 09, 2008 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen.

Ich habe ein Problem mit Rand. Bisher habe ich mit Rand(x,y) immer Zufallszahlen von x bis y erhalten. Jetzt allerdings funktioniert es scheinbar in einer Schleife nicht. Dort will ich drei Instanzen eines Types erzeugen und einem Feld jeweils einen Zufallswert zuweisen. Dabei bekomme ich allerdings keine Zufallszahlen. Der Code:

Code: [AUSKLAPPEN]
      Select item.itemtype
            Case 7 ' Multiball!
               For Local i:Byte = 1 To 3
                  Local b:TBall = New TBall
                  b.winkel=Rand(220,320)
                  BallList.AddLast(b)
               Next
         EndSelect
 


Wieso bekomme ich hier keine Zufallszahlen? Wie gesagt: Im sonstigen Programmverlauf funktioniert die Erzeugung von Zufallszahlen einwandfrei. SeedRnd ist im Programmkopf als MilliSecs() deklariert...

Smily

BeitragSa, Aug 09, 2008 17:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Was meinst du mit "Es funktioniert nicht"?

Fehlermeldung?
Immer der Gleiche wert?
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
  • Zuletzt bearbeitet von Smily am Sa, Aug 09, 2008 17:47, insgesamt einmal bearbeitet
 

Fluppe

BeitragSa, Aug 09, 2008 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Smily0412 hat Folgendes geschrieben:
Was meinst du mit "Es funktioniert nicht"?

Fehlermeldung?
Immer der Gleiche wert?


Genau, immer der gleiche Wert, allerdings ist DER dann tatsächlich zufällig. Also nur ein Zufallswert, der aber dafür in allen drei Instanzen.

Smily

BeitragSa, Aug 09, 2008 17:48
Antworten mit Zitat
Benutzer-Profile anzeigen
An deinem Codeschnipsel ist alles in ordnung. Lass mal b.winkel ausgeben.
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

Fluppe

BeitragSa, Aug 09, 2008 17:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Smily0412 hat Folgendes geschrieben:
An deinem Codeschnipsel ist alles in ordnung. Lass mal b.winkel ausgeben.


Den Wert brauch ich nicht ausgeben lassen: Ich sehe ja an den Bällen, dass es zwar drei Stück sind, die jedoch alle denselben Winkel haben (wenn auch immer einen anderen, der im Bereich der Zufallszahlen liegt). Allerdings sieht man erst beim Aufprall, dass es tatsächlich drei Bälle sind, da sie sich dann erst auch visuell voneinander unterscheiden lassen.)

Könnte es vielleicht daran liegen, dass die Schleife in einem Programmdurchlauf abgearbeitet wird, ohne einen neuen millisecs- bzw Rand-Wert nachzuliefern? Das wäre zumindest eine Erklärung. Obwohl ich das eigentlich nicht glaube, dann könnte ich ja in bestimmten Schleifen prinzipiell keine Zufallszahlen erzeugen. Oder dass die Abfrage in einer Select-Abfrage passiert? Sollte doch eigentlich nicht der Fall sein, oder?

Xeres

Moderator

BeitragSa, Aug 09, 2008 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Zufallsberechnung verwendet immer das letzte Ergebnis als Startwert, insofern ist es egal wieviel Zeit zwischen dem "Würfeln" vergeht. Vielleicht gibt es noch andere Winkelveränderungen die du durchführst?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Fluppe

BeitragSa, Aug 09, 2008 18:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres hat Folgendes geschrieben:
Die Zufallsberechnung verwendet immer das letzte Ergebnis als Startwert, insofern ist es egal wieviel Zeit zwischen dem "Würfeln" vergeht. Vielleicht gibt es noch andere Winkelveränderungen die du durchführst?



Edit: Ne, so will das auch nichts werden. Die Winkel stimmen schon... sorry, da werd ich noch mal basteln müssen... meld mich, wenn es Klarheit gibt. Muss jetzt erstmal einkaufen Smile

Smily

BeitragSa, Aug 09, 2008 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Poste mal die komplette relevante schleife bzw das Programm
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

Goodjee

BeitragSa, Aug 09, 2008 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Fluppe hat Folgendes geschrieben:
Smily0412 hat Folgendes geschrieben:
An deinem Codeschnipsel ist alles in ordnung. Lass mal b.winkel ausgeben.


Den Wert brauch ich nicht ausgeben lassen: Ich sehe ja an den Bällen, dass es zwar drei Stück sind, die jedoch alle denselben Winkel haben


kostet ja trotzdem nix...vllt liegt der fehler ja noch woanders
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/
 

Fluppe

BeitragSa, Aug 09, 2008 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Smily0412 hat Folgendes geschrieben:
Poste mal die komplette relevante schleife bzw das Programm


Ok, Problem gelöst. Trivialerweise werden die Winkel von der Kollision mit dem Spieler wieder überschrieben. Ein Offset von einigen Pixeln hat das Problem gelöst.


Cheers - und sorry wegen dem Generve.
 

Nuber

Betreff: SeedRnd Millisecs() oder so

BeitragDi, Sep 02, 2008 22:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hatte auch eine Zufallsroutine mit dem ähnlichen Problem.

Letztlich waren über drei Iterationen kaum veränderte Werte. Wenn man den
SeedRnd Millisecs() (oder wie auch immer) Befehl/Einstellung benutzt werden
die Zahlen zufälliger.

Mein Tipp.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group