Nee, kann eigentlicht nicht!Homoran hat geschrieben:kann es daran liegen, dass ich in einem Programm mehrere Skripts laufen lasse, u.a. auch dein Sonnenstandsskript?
Probier mal diesen Code im "Skript testen" Fenster. Vielleicht ist bei Dir doch noch irgendein Tippfehler:
Code: Alles auswählen
!Version 2014.06.01 ; Verfasser :Eugen Stall
!zwei Systemvariablen "random_zahl" und "random_tp" als Zahl anlegen, Wertebereich 0 bis 70000 !
!Skript erzeugt Real-Zufallszahl zwischen 0 und 1 ungefiltert auf "random_zahl und gemittelt auf "random_tp"
real random = 65536.0 * dom.GetObject("random_zahl").Value();
integer zahl = random.ToInteger();
if ((zahl == 0) || (zahl > 65535)) {zahl= 33757;} !um saubere Startposition sicherzustellen
integer zahl_alt = zahl;
string dualzahl = "";
integer xor ;
integer x;
string messwert;
real m_wert =0.0;
!hier wird ein 16bit-Schieberegister mit XOR-Rückkopplungen simuliert
if (zahl > 32767) {dualzahl = dualzahl + "1"; zahl = zahl - 32768; x = 1;} else {dualzahl = dualzahl + "0"; x = 0;}
xor = x;
if (zahl > 16383) {dualzahl = dualzahl + "1"; zahl = zahl - 16384; x = 1;} else {dualzahl = dualzahl + "0";}
if (zahl > 8191) {dualzahl = dualzahl + "1"; zahl = zahl - 8192; x = 1;} else {dualzahl = dualzahl + "0"; x = 0;}
if ((xor + x) ==1) {xor = 1;} else {xor = 0;}
if (zahl > 4095) {dualzahl = dualzahl + "1"; zahl = zahl - 4096; x = 1;} else {dualzahl = dualzahl + "0"; x = 0;}
if ((xor + x) ==1) {xor = 1;} else {xor = 0;}
if (zahl > 2047) {dualzahl = dualzahl + "1"; zahl = zahl - 2048 ; x = 1;} else {dualzahl = dualzahl + "0";}
if (zahl > 1023) {dualzahl = dualzahl + "1"; zahl = zahl - 1024 ; x = 1;} else {dualzahl = dualzahl + "0"; x = 0;}
if ((xor + x) ==1) {xor = 1;} else {xor = 0;}
if (zahl > 511) {dualzahl = dualzahl + "1"; zahl = zahl - 512 ; x = 1;} else {dualzahl = dualzahl + "0";}
if (zahl > 255) {dualzahl = dualzahl + "1"; zahl = zahl - 256 ; x = 1;} else {dualzahl = dualzahl + "0";}
if (zahl > 127) {dualzahl = dualzahl + "1"; zahl = zahl - 128 ; x = 1;} else {dualzahl = dualzahl + "0";}
if (zahl > 63) {dualzahl = dualzahl + "1"; zahl = zahl - 64 ; x = 1;} else {dualzahl = dualzahl + "0";}
if (zahl > 31) {dualzahl = dualzahl + "1"; zahl = zahl - 32 ; x = 1;} else {dualzahl = dualzahl + "0";}
if (zahl > 15) {dualzahl = dualzahl + "1"; zahl = zahl - 16 ; x = 1;} else {dualzahl = dualzahl + "0";}
if (zahl > 7) {dualzahl = dualzahl + "1"; zahl = zahl - 8 ; x = 1;} else {dualzahl = dualzahl + "0";}
if (zahl > 3) {dualzahl = dualzahl + "1"; zahl = zahl - 4 ; x = 1;} else {dualzahl = dualzahl + "0";}
if (zahl > 1) {dualzahl = dualzahl + "1"; zahl = zahl - 2 ; x = 1;} else {dualzahl = dualzahl + "0";}
if (zahl > 0) {dualzahl = dualzahl + "1"; zahl = zahl - 1 ; x = 1;} else {dualzahl = dualzahl + "0";}
!if ((xor + 1) ==1) {xor = 1;} else {xor = 0;}
zahl = zahl_alt * 2;
if (zahl > 65535) {zahl = zahl - 65536;}
zahl = zahl + xor;
!Ergebnis ausgeben:
random = 0.0000153055 * zahl; !random auf Wertebereich 0.0 bis 1.0 normieren
dom.GetObject("random_zahl").State(random);
WriteLine ( "random :" + random);
!Mittelwertbildung :
!der Faktor 0.4 bestimmt die Mittelungsstärke. Je kleiner, desto "ruhiger" das Rauschsignal
real tp_random = dom.GetObject("random_tp").Value();
tp_random = tp_random + (0.4 * (random - tp_random));
WriteLine("tp_random :" +tp_random);
dom.GetObject("random_tp").State(tp_random);