Rand() ?
Übersicht

shark95Betreff: Rand() ? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo Leute!
Hab mal ne Frage: Wieso werden immer die gleichen Rand() Zahlen erstellt? Ich erzeuge am Beginn meines Programms 10 Objekte, deren Koordinaten mit Rand() berechnet werden. Das funktioniert ja auch, aber wenn ich das Programm beende und wieder starte werden sie wieder am selben Punkt erzeugt. Was muss ich machen, dass es wirklich zufällig gewählt wird? Danke |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst den Zufallsgenerator erst mittels seedrnd( millisecs()) initialisieren, dann kriegste "echte" Zufallszahlen. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Skulk |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
rand() ist wie alles andre auch "nur" ein mathematischer algorithmus der "scheinzufallszahlen" anhand einer basiszahl erzeugt
diese basiszahl müsst du ihm über SeedRnd() mitteilen. wie bladerunner schon schrieb, nimmt man gängigerweise millisecs(), da sich dieses zahl stetig ändert und man somit die höchste wahrscheinlichkeit erreicht, zufallszahlen zu erzeugen. |
||
War doesn't determine who's right,
war determines who's left... |
dada11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
An welcher Stelle im Source muß das stehen ? Am Anfang so wie GRAPHICS oder kurz vor der RAND Funktion.
Dada |
||
Skulk |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Generell schreibt man das noch über graphics
aber du kannst es so oft du willst im sourcecode hinterlegen und auch wo du willst. nur erst wenn diese zeile abgearbeitet wurde, kommen "echt" zufallszahlen... |
||
War doesn't determine who's right,
war determines who's left... |
dada11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
COOL, danke. Hatte mich da auch schon gewundert das die Zufallszahlen rein Zufällig immer gleich waren. Was für ein Zufall ![]() Dada |
||
Ensign Joe |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
noch zufälliger wirds mit:Code: [AUSKLAPPEN] SeedRnd Millisecs()+ScanLine() ![]() |
||
Ich habe jetzt eine Pommesbude aufgemacht am Münchner Hauptbahnhof.
Und da ich Herbert Görgens heiße, heißt diese Pommesbude Herbert's Pommesbude ![]() |
![]() |
ChaosCoder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ensign Joe hat Folgendes geschrieben:
Was aber in Blitzmax nicht funktioniert weil es ScanLine() da nicht gibt! Gibts den Befehl unter einem anderen Namen auch in BMax??? MfG ChAoS|DrAgOn |
||
Projekte: Geolaria | aNemy
Webseite: chaosspace.de |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Auf Anhieb wüsste ich keine Entsprechung. Btw. ist die Anzahl an millisecs() vollkommen ausreichend. Mit scanline wird nur eine Zahl von 0-bildschirmvertikale hinzuaddiert. Da ein menschlicher user schon kaum ein Programm 2 mal zur selben Systemzeit starten wird ist das nicht nötig. (Zufälliger als Zufall geht schlecht ![]() |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
dada11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
kann man mit Scanline dann sowas wie ein RasterzeilenInterrupt machen ? Also eine bestimmte Zeileabfragen und dann einen bestimmten Code ausführen bzw in eine Function springen ? Dada |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Theoretisch schon, allerdings ist ein Rasterzeileninterupt unter BB fraglich im Sinn. Die zur Verfügung stehenden Grafikmittel sind so fortgeschritten dass man nicht mehr auf solche Effekte angewiesen ist- es geht anders einfacher und bequemer.
Einzig bei ausgeschalteter Synchronisation (flip 0) wäre noch ein bissl speedkitzeln theoretisch möglich. Aber ob es den Aufwand lohnt sei mal dahingestellt. Unter Bmax ist es aber ja eh kein Thema, da es hier scanline() nicht gibt. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
dada11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Aha, dann hat sich das ja eh erledigt ![]() Dada |
||
Skulk |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ensign Joe hat Folgendes geschrieben:
das könnte man auch wiefolgt ins unendliche treiben, macht aber ehrlichgesagt keinen sinn ![]() Code: [AUSKLAPPEN] SeedRnd MilliSecs()
SeedRnd Rand(9999) SeedRnd Rand(9999) ... |
||
War doesn't determine who's right,
war determines who's left... |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das würde so nicht funktionieren, da Du immer wenn du den Samen mit '9999' setzt die selbe erste Zufallszahl produzierst.
Übrigens ne nette Methode für Verschlüsselungen, vorausgesetzt seedrnd() liefert auf allen Rechnern die selbe Folge. Unter B3D ging das. Lustigerweise hat B+ eine andere Seedgrundlage. Daher durften nicht die Besitzer verschiedener Blitzversionen für sich compilieren. Aber wenn man ein Compilat weiterreichte ging es. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group