https://www.lernhelfer.de/schuelerlexik ... allszahlen
geschrieben. Dieser Erzeugt gleichverteilte Zahlen von 1 - 99999, wobei es ein wiederkehrendes Muster ist und nicht alle Zahlen in diesem Muster vorkommen.
Irgendwann wird daraus vielleicht ein einfacher Abwesenheits-Lichtsimulator. Die Zufallszahlen sind keine echten Zufallszahlen und sollten nicht für IT-Sicherheitsanwendungen genutzt werden.
Da der Custom-Code die Funktion CalcFormula (Freie Formel) nutzt, geht der Code erst ab V2.0 IP4.
Der Code wird nicht automatisch getriggert und muss durch einen zu setzenden Trigger-Eingang ausgelöst werden.
Ich teste gerade mit einen zyklischen Trigger jede Sekunde und schreibe mir eine TimeSeries damit voll um zu sehen, wie gleichverteilt das Ganze ist.
[edit: Code in V1.1 eingefügt, weil V1.0 durch Rund Integer->Float Rundungsfehler nicht zufriedenstellend war (siehe Beiträge 2 und 3)]
Code: Alles auswählen
/**
* Pseudozufallszahlengenerator V1.1 - erzeugt Werte von 1 bis 99999 (exklusiv)
* erzeugt Zahlen, die weitestgehend dieselben Eigenschaften von echten Zufallszahlen haben, aber deterministisch (rekursiv) erzeugt werden und daher einem wiederkehrenden Muster unterliegen.
* nach folgendem Webartikel: https://www.lernhelfer.de/schuelerlexikon/mathematik-abitur/artikel/pseudozufallszahlen
*
* Nutzungsrechte:
* Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL ("Timberwolf Open Logikblock License") die unter https://wrgt.news/TOLL zum Download zur Verfügung steht.
*/
{
"Level": [
["$Wert","integer",62347],
["$Produkt","integer",0],
["$Aufgerundet","bool",false],
["$Out","integer",0],
["$Faktor","integer",173],
["$Formel_A","string","X1*X2"],
["$Formel_B","string","(X1-rint(X1/100000)*100000+X2*100000)"],
["$VAR<Inhibit?>","bool",false]
],
"Module": [
["Break", ["$VAR<Inhibit?>"]],
["CalcFormula",["$Faktor","$Wert"], "$Produkt", "$Formel_A"],
["CalcFormula",["$Produkt",0], "$Wert", "$Formel_B"],
["Comparator" , "$Wert" , "-$Aufgerundet" , 0],
["CalcFormula",["$Produkt","$Aufgerundet"], "$Wert", "$Formel_B"]
],
"Input": [
["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
],
"Output": [
["Zahl","Pseudo-Zufallszahl von 1 bis 99999","$Wert","c"]
]
}