[Monkey] "Echter" Zufall

Übersicht Andere Programmiersprachen Beginners-Corner

Neue Antwort erstellen

 

BBPro2

Betreff: "Echter" Zufall

BeitragMi, Aug 15, 2012 11:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey,

wie kann ich in Monkey "echten" Zufall generieren ?
In BB ist das ja sowas wie
SeedRnd Millisecs ()

problem bei Monkey ist aber, dass Millisecs () nicht die Zeit seit dem
1.1.1970 sondern seit start der App angibt.

Wenn ich also Seed = Millisecs () an den Anfang des Programms setze
kommt es sehr sehr häufig zu Wiederholungen des "Zufalls",
da Millisecs () für gewöhnlich im Bereich von 0 und 100 liegt oder so...

Wie macht ihr das ?

Danke im Voraus
LG BBPro2

BladeRunner

Moderator

BeitragMi, Aug 15, 2012 11:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Also Millisecs() bei BB gibt die Zeit seit Systemstart zurück, nicht seit 1.1.70. Hat mit dem Unix Time Stamp nichts zu tun.
Ich habe hier kein Monkey, daher kann ich es leider nicht testen, aber es würde mich wundern wenn Millisecs() unter Monkey anders funktionieren würde. Selbst wenn es - wie Du sagst- ab Appstart ist, kannst Du den Zufalssgenerator ja erst nach der ersten Usereingabe initialisieren, denn die wird immer ein zufälliges Zeitelement haben.
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
 

BBPro2

BeitragMi, Aug 15, 2012 12:50
Antworten mit Zitat
Benutzer-Profile anzeigen
öhm ja stimmt, seit systemstart...
dennoch ist das natürlich weitaus sinnvoller als seit app-start wie in monkey
(und ja, das ist definitiv so - wenn man ne app startet und sich per DrawText
Millisecs() ausgeben lässt gibts immer 0, 1, ,2, 3, ...
zudem steht es auch so in den docs)

das mit der usereingabe wäre ne idee. vlt multiplizier ich es noch mit der x-koordinate auf der der user als erstes rumtippt oder sowas in der art.
is halt irgendwie nervig im entwicklungsstadium wo es noch keine usereingaben gibt aber ok ^^

ZaP

BeitragMi, Aug 15, 2012 12:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Nimm doch den Wert des Accelerometers, oder eines anderen Sensors, wenn das geht Smile
Starfare: Worklog, Website (download)
 

BBPro2

BeitragMi, Aug 15, 2012 13:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist nicht für jede Plattform geeignet.
Für HTML5 z.B. gar nicht Very Happy
 

PhillipK

BeitragMi, Aug 15, 2012 13:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann verrechne ein paar sachen Smile

Nutzername + millisecs + millisecs bei erster nutzereingabe, falls vorhanden maus X / mausY oder letzten touch x/y, targetnamen, etc etc

Nutzername verrechnen: Shifte die bytewerte zusammen oder schreib einen kleinen algorythmus, der zb 4 bytes zusammenshiftet (-> 1 int) und den rest draufrechnet.

Fest steht: je mehr unterschiedliche quellen du nimmst, um einen pseudowert auszurechnen, desto besser.

Was gibts denn feines bei Monkey, was man über jedes target einlesen kann?

Tennisball

BeitragMi, Aug 15, 2012 13:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

habe irgendwo diese Funktion her:

Code: [AUSKLAPPEN]
Extern
   
   Function RealMillisecs:Int() = "(function(){return (new Date()).getTime();})"

Public


Funktioniert auf jeden Fall mit HTML5, Rest weiß ich auch nicht.

mfg,
Tennisball

Midimaster

BeitragMi, Aug 15, 2012 14:01
Antworten mit Zitat
Benutzer-Profile anzeigen
mit dem Modul "Diddy" wird auch ein systemweiter Millisecs() angeboten. Da da auch sonst noch ein paar nette Zusätze drin sind, fast schon eine MOD, die immer dabei sein sollte.
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Propellator

BeitragMi, Aug 15, 2012 17:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Unter Android kannst du wahrscheinlich auch /dev/random und /dev/urandom auslesen, da es ja auf einem Linux-Kernel läuft. Das wäre der einzige "Echte Zufall", SeedRnd MilliSecs() ist genau so gefaket wie alles andere.

Noch genauer: /dev/random ist eine Mischung aus Userinput etc. um möglichst zufällige Zahlen zu generieren. Dies wird z.B. für die Berechnung von RSA Keypairs verwendet, wo es wichtig ist eine möglichst nicht-berechenbare Zahl zu haben.
/proc/sys/kernel/random/entropy_avail gibt dir an wie voraussehbar die nächste Zahl ist (Siehe Informationsentropie) Je höher der Wert desto zufälliger die Zahl.
/dev/urandom hingegen nimmt afaik Spannungsunterschiede der Hardware, was ebenfalls sehr guter Zufall ist.
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis.

Neue Antwort erstellen


Übersicht Andere Programmiersprachen Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group