Zufallszahl erzeugen

  • Hallo,


    ich bin neu hier und noch in Ausbildung zum Automatisierungstechniker. Wir haben in der Schule gerade das Thema Zufallszahl mit der Funktion RND zu erzeugen, wovon anscheinend nicht mal der Dozent Ahnung hat.....


    Ich habe so einiges durch, komme aber nicht drauf und finde über Google auch nichts brauchbares dazu. Der Dozent hat daraufhin bei seinem Vorgänger eine Lösung geholt, die aber auch nicht in Cosimir Educational funktioniert. Es kommt bei 101 M1 = 1 Syntax Error.
    Habe die Aufgabenstellung und die Lösung als PDF angehängt und hoffe, dass mir hier jemand helfen kann.


    Melfa-Basic IV
    Roboter: RV-2AJ


    Viele Grüße
    Dennis

  • ANZEIGE
  • Hallo,


    falls das eine Frage war, habe ich sie nicht verstanden.


    Eine Google Suche nach "basic rnd" liefert eine Menge Treffer. Das ist nichts spezielles, den Befehl gab es früher auf den Homecomputern und beim Microsoft Basic auf dem PC. Auch in Excel und Visual Basic usw. gibt es das so ähnlich.


    An dem M1 = 1 kann ich nichts falsches finden.


    Die einzigen Zeilen, die in dem PDF merkwürdig aussehen, sind die 260 und 510. Da stehen eigentlich keine Klammern. Aber verboten sind sie eventuell nicht.


    Grüße


    Urmel

  • Es tut mir Leid, wenn ich nicht deutlich rüber kam.


    Nochmal. Wir lernen den Roboter mit der Programmiersprache Melfa-Basic 4 zu programmieren. Dazu nutzen wir das Programm Cosimir Educational.


    Unsere Aufgabe ist es, 3 Werkstücke von zufällig ausgewählten Positionen auf der Palette abzuholen. Dieses zufällige Positionen der Palette anfahren sollen wir mit der Funktion RND machen. Zwecks RND habe ich aus dem Programmierhandbuch die Seite als PDF angefügt.


    Meine Frage ist hier nun, wie muss ich programmieren, damit dies klappt ohne Syntax Error oder sonstige Fehler? Den Rest der Aufgabe habe ich selbst geschafft, mein einziges Problem ist diese zufälligen Positionen.


    Viele Grüße
    Dennis

  • Also Rnd(0) liefert Fliesskommazahlen zwischen 0 und 1. Bei jedem Aufruf eine andere.


    Bei gleichem Startwert kommt immer die gleiche Zahlenfolge, deshalb heißen die Dinger auch Pseudozufallszahlen.


    Das ist der Sinn hinter den Zeilen 78 und 80 in dem PDF ganz oben. Man holt sich am Programmanfang den Startwert aus den Sekunden von der Uhr, damit nicht immer wieder die gleiche "Zufallsfolge" kommt. Wirklich zufällig ist das ganze dann immer noch nicht, aber es kommt immer eine von 60 Zahlenfolgen. Man macht das eigentlich nur einmal im Programm, das sieht auf dem PDF etwas eigenartig aus.


    Was man noch machen muss, ist aus der Zahl zwischen 0 und 1 eine Zahl zwischen 1 und "Anzahl der Positionen auf der Palette" zu machen. Auch da habe ich mit dem PDF etwas Probleme. In der Doku von Office sieht die Formel etwas anders aus
    https://docs.microsoft.com/en-…terface-help/rnd-function


    Ich würde da mal etwas probieren und erstmal die Zahlen ausgeben lassen.

  • Als jemand, der absolut NULL Ahnung hat von diesem Roboter, und weil heute Freitag ist:
    zu Zeile 81 und 100 bis 107: wieso nimmt man nicht einfach INT( 8*RND(Start))+1 stattdessen?
    zu Zeile 100/101: aus irgendeiner im Internet gefundenen Doku:

    Zitat

    (7) Space
    The space character, when used as part of a character string constant or within a comments step, is interpreted as a character. The space character is required as a delimiter immediately after a step No. or a command word, and between data items.


    Aber wie gesagt, nur aus sportlichem Interesse ;)
    Ansonsten: im KUKA habe ich mir schon oft 'ne Zufallsfunktion gewünscht. Ich multipliziere dann immer Achswinkelfluktuationen...


    Grüße,
    Michael

  • Ich nochmal :)


    Ich muss ja bei dieser Palette 3 verschiedene Palettenpositionen anfahren. Meine Frage ist, hat jemand eine Idee, wie ich es hinbekomme, dass keine Zahl ein zweites mal vorkommt? Also das z.b keine 5 - 5- 3 kommt oder 5 - 3 - 5


    Hab es schon mit IF Anweisungen probiert, aber das will irgendwie nicht.


    Viele Grüße
    Dennis


  • Schau dir den Befehl "Dim" an. Du musst dir in einem Array merken, welche Positionen schon verwendet wurden.


    Haben Sie auch ein kurzes Beispiel, wie ich das "Dim" anwende? Der Dozent hat das mal angesprochen, wüsste ich jetzt aber nicht, wie ich es anwende. Nehmen wir mal an M1 ist die erzeugte Zahl. Muss ich dann DIM 1(M1) schreiben?

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden