Blueprint Node gibt Zufallszahlen aus, aber mit mehreren Prints an den Ausgängen werden bei jedem Print die Zahlen neu erstellt :-(

  • Ich habe ein C++ Blueprint-Node erstellt.
    Dieses Custom Node gibt an mehreren Ausgängen Zufallsstrings aus.


    Das Problem:
    Beim jedem Print werden die Zufälle neu erstellt.
    Die Zufallsprodukte hängen aber voneinander ab.
    Das bedeutet dass an den Ausgängen zwar per Zufall mehrere Strings aus einem Array ausgegeben werden, jedoch nie die gleichen parallel.
    Durch die Neuberechnung bei jedem Print passiert das aber.


    Wie kann ich das verhindern?
    Ich denke wenn ich die Zufallsprodukte mit Benutzereingaben ect. weiter verarbeite passiert das Gleiche wie bei den String Nodes.

  • Schnall dein Text nicht sorry.


    Willst du nun unterschiedliche Strings haben und bekommst dauernd die Gleichen oder willst du die Gleichen bekommen aber bekommst unterschiedliche ???
    In der einen Zeile hört sich das so und in der anderen anders an.


    Willst du die gleichen haben dann speicher dir doch die Ausgaben zwischen.
    Willst du ungleiche Zahlen dann beziehe die aktuellen Sekunden der Zeit hinzu.


    Kenne das aus der Programmierung das ein Randomgenerator zwar Zufallszahlen erzeugt aber bei jeder Aktivierung läuft er immer die gleichen Zahlen ab, daher ist es dann kein "wirkliches" Random.
    Daher gibt es die Möglichkeiten einen Zusatzwert mit zu integrieren meistens die Sekundenzahl der aktuellen Uhrzeit, diese sorgt dann für etwas mehr Zufall, wenn auch nur begrenzt.


    Mehr kann ich dir leider nicht sagen weil mir nicht wirklich klar ist was du suchst

  • Also ich habe ein Array in dem 9 falsche Antworten für eine Frage sind.
    Ich will immer 4 Antworten ausgeben.
    Davon sind 3 aus den 9 und einmal die richtige Antwort.
    Quizz Ähnlich.


    Per Zufall suche ich eine aus den 9 aus, lege sie in einer einzelnen Variable an den Ausgang.
    Diese wird aus den 9 Antworten gelöscht. Es stehen also nur noch 8 zur Verfügung.


    Aus den 8 wird wieder per Zufall eine ausgesucht, ausgegeben und dann gelöscht.
    Und ein drittes mal.


    Per Zufall wurden so 3 verschiedene Antworten ausgesucht. Sie sind nie die gleichen!


    Jetzt wird aber bei jedem Print dieser Node neu ausgewertet. Ich erhalte also immer neu berechnete 3 Antworten.
    So kommt es, dass diese gleich sein können da ich nicht kontrollieren kann, ob zwischen dem ersten Auswerten des Nodes und dem zweiten Auswerten gleiche Antworten ausgesucht wurden.


    Das erneute Auswerten scheint durch die Verbindung durch den Exec-Port angestoßen zu werden.
    Ich vermute, dass jeder Exec-Port Schritt den Node mit dem Eingang ausführt. Sind dessen Input-Ports belegt werden diese dann ausgeführt.
    Im nächsten Print-Node führt es dazu das wieder die Eingänge berechnet werden.
    Jetzt aber mit neuen Zufallszahlen.


    Ich habe schon gesucht wie man an seinem Node selbst ein Exec erzeugt um sicherzustellen dass nach der Ausführung des eigenen Nodes die anderen folgen, aber nicht erneut ausgeführt wird.
    Glaube aber mittlerweile dass es so nicht klappen wird.


    Oder liegt es irgendwie an einer Framebasierten Neuberechnung der Blueprint?
    Aber das kann ich mir dann auch wieder nicht vorstellen...



    Danke dass Du nachgefragt hast ;)

    - Unreal-Engine 4, Cinema4D R15 Studio, ZBrush, 3D-Coat, Photoshop CS6 Ext. -

  • Leider sieht man in deinem Screen nicht woher die Daten kommen. Du kannst doch aber sehr gut mit Hilfsvariablen arbeiten.
    Erzeuge dir eine Randomzahl die du dir in ein Array schreibst, dann erstelle eine zweite Zahl die du in dein Array schreibst, aber nur nachdem du per
    Prüferoutine geprüft hast ob es die Zahl schon in deinem Array gibt.
    Das ganze machst du per Loop bis dein Array 4 Zahlen hat.
    Die 4 Zahlen sind dann die Antworten die du Aus deinem Antwortpool lädst.
    Nach dem Print leerst du dann dein Array wieder.


    Denke das sollte klappen ohne das ich jetzt tiefer drüber nachdenke

  • Hatte ich auch erst mit dem Loop. Fand ich dann aber zu unzuverlässig und stürzte auch ab.
    Dann fiel mir ein dass es eleganter wäre ein Array um das ausgewähle Element zu kürzen.


    Ich habe den Code mal reduziert weil noch viel Mist drinnen war was ausgeklammert (Als Kommentar "unschädlich") gemacht wurde.


    Hier sind es 4 Antworten die zufällig ausgewählt werden.
    Eine wird später mit der richtigen Überschrieben. (Noch nicht im Code)


    - Unreal-Engine 4, Cinema4D R15 Studio, ZBrush, 3D-Coat, Photoshop CS6 Ext. -

  • Du meinst die Ergebnisse des Nodes mit dem Set-Node im Blueprint Editor in eine Variable oder Array speichern und an anderer Stelle diese dann mit Get auslesen?


    Ahh, unabhängig wird der Eingang ja nicht ständig neu ausgelesen.
    mal probieren :)

    - Unreal-Engine 4, Cinema4D R15 Studio, ZBrush, 3D-Coat, Photoshop CS6 Ext. -

  • Es scheint zu funktionieren. Jedenfalls mit einem Set-Node die Ausgänge in eine Array-Variable zu speichern.
    Beim Auslesen wird immer aus dem Array gelesen und nicht neu berechnet :)


    Jetzt gebe ich weitere Informationen aus die keine Strings sind, sondern Integer Zahlen.
    Dafür muss ich ja zusätzliche Set-Nodes verwenden. Diese benutzen wieder einen Exec-Port welcher die Neuberechnung auslöst.

    - Unreal-Engine 4, Cinema4D R15 Studio, ZBrush, 3D-Coat, Photoshop CS6 Ext. -

    2 Mal editiert, zuletzt von JackMcRip ()