Brauche "todsichere" Zufallszahlen

Übersicht BlitzBasic Allgemein

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

 

Apocalyptic

BeitragSo, Sep 04, 2005 11:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn er sein Programm compiliert verteilt, kann ihm das ja egal sein Wink

Aber ich denke, dass es eindeutig die bessere Variante ist, dass ganze über den Host laufen zu lassen.
Suum cuique

[ www.ffs-net.de.vu ] [ Raycaster ]

Sebastian

BeitragSo, Sep 04, 2005 13:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Eindeutig , sowas muss Server ( o. Host) -seitig gemacht werden !
Und solange wird das Versenden nun auch nicht brauchen .....
... Voraus gesetzt man macht es richtig.

Ich hab da auch ne Idee:
Man schickt 30s ( oder länger ) eine zufällige Zahl zu den Clients, diese kann dann ja genutzt werden um mit einem überall gleichen Algo alle Zufallszahlen zu erzeugen die bis zur nächsten Übertragung fällig sind.
Das Ergebniss wären zufällige Zahlen, die doch überrall gleich sind.
Einzigtes Problem ist das der Algo aus einer Zahl eine immergleiche Folge von z-Zahlen Produzieren müsste, was schweirig , jedoch nicht unmöglich ist ....
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf !

stfighter01

BeitragSo, Sep 04, 2005 13:37
Antworten mit Zitat
Benutzer-Profile anzeigen
@sebastian

wo wir wieder beim zufallsgenerator wären *g*

@x-pressive
ich würde es einfach mit dem normalen randseed probieren.
einen algo kann man noch immer schreiben.
mach halt eine zwischenfunktion die du schnell aktualisieren kannst

z.b.:
BlitzBasic: [AUSKLAPPEN]

Function rand_(min,max)
Return Rand(min,max);
End Function
Denken hilft!

Sebastian

BeitragSo, Sep 04, 2005 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Eigentlich nein, denn das Zufalls Elemet liefert der host , alles was man machen muss ist aus einer Zahl einen Zahlenfolge zu berechnen.
Was kein all zu großes Problem sein dürfte .....
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf !

stfighter01

BeitragSo, Sep 04, 2005 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
wobei diese zahlenfolge aber aussehen sollte als wäre sie zufällig-> s.h.: zufallsgenerator Laughing
Denken hilft!

BlitzChecker

BeitragSo, Sep 04, 2005 20:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei deiner Lösung gibt es nur zwei kleine Probleme:

Was ist bei einer Netzwerkstörung? (OK, wenn es keine so wichtigen Zahlen sind, kann man es ja noch verkraften)
Das Netzwerk ist nich die schnellste Lösung, bei Reflexspielen fatal.
www.xairro.com

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Sep 05, 2005 2:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Totsichere Zufallszahlen gibt es in der Natur zuhauf. Nimm ein gutes Micro, ein gutes Aufnahmegerät (mit einem gutem AD-Wandler (kein billigen MP3-Player oder Mobiltelefon mit Aufnahmefunktion)) und nehme einen Wasserfall damit auf. Schneide jeweils alle HightBytes ab (da es dort zur nicht voller Aussteuerung bzw. Übersteuerung kommt). Also nur die LowBytes benutzen. Bei einer Abtastung von 44100 Hz Mono, hast du dann schon nach 23,777 Sekunden 1 MB an nützlichen Daten die rein Zufällig sind und von KEINEM Superrechner erraten werden können. Ausser der Computer ist Gott persönlich. '''Oder aber auch Deepfort, die Erde etc... Very Happy

x-pressive

BeitragMo, Sep 05, 2005 4:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem sind nicht die verschiedenen Blitz-Versionen, sondern oft die verschiedenen Prozessortypen. Da hilft auch kompilieren nichts.

Aber ich habe mal drei verschiede Zufalls-Algos ausgegraben und kompiliert, um schon mal ein Problem auszuschliessen. Könnt ihr das Programm mal eben testen:

Download Zufalls-Test

Bei mir kommt folgendes raus:

Zitat:

FÜNFZEHN WERTE ZWISCHEN 1 UND 5

ALGO1:
4 2 1 4 3 1 5 3 2 5 4 2 1 4 3

ALGO2:
5 3 3 2 4 5 1 3 2 1 4 1 2 4 1

ALGO3:
4 1 1 5 4 4 3 3 1 4 4 4 3 5 5

• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Sep 05, 2005 10:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei kommt genau das gleiche raus...
 

MegaTefyt

BeitragMo, Sep 05, 2005 11:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, mein Vorschlag wäre gewesen, dass du einen "hardcoded" Zufallszahlenreihe benutzt, die du manipulieren kannst.

Also beispielsweise ein 1000er-Array befüllt mit Zufallszahlen, das bei allen Clients GLEICH ist (fest im Programmcode). Oder es wird vom Server generiert und am Anfang übertragen. Der springende Punkt dabei ist: du schreibst einen Algorithmus, der anhand eines Wertes aus der Zahlenreihe eine komplett neue Zahlenreihe generiert. Da die Reihe ja bei allen Clients gleich ist braucht nur der Manipulationswert übertragen werden, so dass für einen Wert von 1 eine andere Zufallsreihe rauskommt als für 2. So in etwa... ^^

Sebastian

BeitragMo, Sep 05, 2005 12:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:

Also, mein Vorschlag wäre gewesen, dass du einen "hardcoded" Zufallszahlenreihe benutzt, die du manipulieren kannst.

Also beispielsweise ein 1000er-Array befüllt mit Zufallszahlen, das bei allen Clients GLEICH ist (fest im Programmcode). Oder es wird vom Server generiert und am Anfang übertragen. Der springende Punkt dabei ist: du schreibst einen Algorithmus, der anhand eines Wertes aus der Zahlenreihe eine komplett neue Zahlenreihe generiert. Da die Reihe ja bei allen Clients gleich ist braucht nur der Manipulationswert übertragen werden, so dass für einen Wert von 1 eine andere Zufallsreihe rauskommt als für 2. So in etwa... ^^





So in etwa meinte ich das auch bloß das ich keine Reihe übertragen wollte sondern einen Wert aus dem eine Reihe Berechnet wird .........
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf !

x-pressive

BeitragMo, Sep 05, 2005 16:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber wenn einer der obigen Algos funktioniert, wäre es doch schon perfekt -dann braucht der Host nur noch seine RandomSeed-Zahl an alle Teilnehmer übertragen und jeder Rechner kann eine Runde selbstständig abarbeiten, weil garantiert die selben Zahlen kommen. Das wäre am saubersten und am einfachsten. Könnt ihr das mal testen? Ich sitz hier vor nem Athlon -vielleicht bringt ein Pentium ja andere Resultate, das müsste ich halt wissen.

Am Ende einer Runde werden alle Rechner immer wieder synchronisiert, d.h. das Spiel wartet, bis alle fertig sind. Am Anfang der nächsten Runde übeträgt der Host wieder ein RandomSeed an alle. Wenn jetzt noch alle genau die selben Zufallszahlen bekommen, müsste das doch passen, oder habe ich inzwischen eine Denkblockade?
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
 

MegaTefyt

BeitragMo, Sep 05, 2005 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir ist das obige Ergebnis exakt das gleiche auf einem Intel Pentium 4 3,2 Ghz Extreme Edition.

x-pressive

BeitragMo, Sep 05, 2005 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Na, dann müsste das doch eigentlich funktionieren... werd' ich mal testen...
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Firstdeathmaker

BeitragMo, Sep 05, 2005 22:14
Antworten mit Zitat
Benutzer-Profile anzeigen
^ Es ist sogar so, dass die Zufallszahlen in BB teilweise auf das Betriebssystem ankommen, daher kann man nicht davon ausgehen dass sie immer in der gleichen Reihenfolge auftreten. Vielleicht solltest du mal Google befragen und selber einen Zufallszahlenalgo Nachcoden. Was ich zu dem Thema eben interessantes gefunden habe, ist:

Lineare Kongruenz-Generatoren
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

Florian

BeitragDi, Sep 06, 2005 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]


Graphics 640,480,16,2

;Variablen für das Programm
Const M# = 100000.0
Const A = 897
Global x = 5

Print \"Leertaste drücken um\"
Print \"Zufallszahl zu erstellen\"

Repeat
If KeyHit(57) Then
Print Zufall#()
EndIf
Until KeyHit(1)
End

Function Zufall#()
x = ( A * x ) Mod M
Return (x/M)
End Function

 

Absoluter Beginner

BeitragDi, Sep 06, 2005 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Afaik ist Mersenne Twister der bessere / beste "Zufallszahlen" Generator
Also sollte man lieber den nehmen Wink
Error Inside!

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group