Einsatz von "Random()" in NXC für NXT

NXC, C/C++, Lejos, pbLua, RobotC...

Moderator: Moderatoren

Benutzeravatar
Mortimore
Mindstormsfreund
Mindstormsfreund
Beiträge: 3
Registriert: 24. Feb 2016 17:44
Wohnort: Im Umkreis von Heilbronn

Einsatz von "Random()" in NXC für NXT

Beitragvon Mortimore » 29. Feb 2016 18:50

Code: Alles auswählen

    if(Random(2) == 2)
    {
      Acquire(move);
      OnFwd(OUT_AC,70);
      Wait(1000);
      Float(OUT_AC);
      Release(move);
    }

Hallo,
Ich habe diese Bedingung in einem Programm verwendet. Ich konnte es erfolgreich auf meinem NXT ausführen, aber zufällig nach vorne gefahren ist der Roboter nicht.
Mich würde mal interessieren, wieso das so nicht funktioniert.

Danke für eure Hilfe.


PS:
Es existiert eine "Mutex-Variable" mit dem Name "move" und die Bedingung ist in einem Task, dass wiederrum vom main-task ausgeführt wird.

Peter28
Schreibt viel
Schreibt viel
Beiträge: 185
Registriert: 2. Nov 2013 21:44
Wohnort: Schmallenberg

Re: Einsatz von "Random()" in NXC für NXT

Beitragvon Peter28 » 29. Feb 2016 19:26

Schätze mal, dass die (2) bedeutet es werden Werte von 0 - 2 generiert. Also von 0,000000...0,0000001 ........1,9999999 ....2.
Bis Du bei dieser Latte von Zahlen mal die 2 erwischst, ist wie ein 6-er im Lotto.

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5398
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Einsatz von "Random()" in NXC für NXT

Beitragvon HaWe » 29. Feb 2016 19:34

stimmt!

in so einem Fall hilft ein Blick in die Kontext-sensitive Hilfe (Wort markieren, dann F1:

int Random ( unsigned int n = 0 )
inline

Generate random number.

Return a signed or unsigned 16-bit random number. If the optional argument n is not provided the function will return a signed value. Otherwise the returned value will range between 0 and n (exclusive).
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Benutzeravatar
Mortimore
Mindstormsfreund
Mindstormsfreund
Beiträge: 3
Registriert: 24. Feb 2016 17:44
Wohnort: Im Umkreis von Heilbronn

Re: Einsatz von "Random()" in NXC für NXT

Beitragvon Mortimore » 29. Feb 2016 23:27

Danke für eure Antworten.

Ich habe gedacht, dass der Random-Befehl generell int-Zahlen (ich glaube, dass bedeutet integral) generiert.
Deshalb habe ich die Chance, dass der Befehl ausgeführt wird auf 2/3 geschätzt (Für 0,1 oder -> 2 -> Befehle ausführen). So habe ich das jedenfalls aus der Anleitung interpretiert: http://www.hsg-kl.de/faecher/inf/msr/lego/nxc/NXC-Tutorial_DE.pdf [Seite 13]

Schade, dass man das nicht so abkürzen kann. Wenn ihr vielleicht dennoch wisst, wie man es möglichst kurz (oder sogar in einem Befehl) schreiben kann, wäre es natürlich super, würdet ihr's mir verraten :D .

Mortimore

Peter28
Schreibt viel
Schreibt viel
Beiträge: 185
Registriert: 2. Nov 2013 21:44
Wohnort: Schmallenberg

Re: Einsatz von "Random()" in NXC für NXT

Beitragvon Peter28 » 1. Mär 2016 07:18

Als Beispiel: int(2,7) = 2, int (0,9 )= 0. Wenn jetzt int(Random(2)) ausgewertet wird, können die Werte 0,1 und entstehen. Es heißt normalerweise bei Rnd von 0 bis einer Zahl. Wenn Du (zum besseren Verständnis) eine Würfelsequenz erzeugen willst, dann zahl=int(random(5)) +1. Du erhälst also 0,1,2,3,4,5 und da die 1 addiert wird kommen 1-6 heraus.

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5398
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Einsatz von "Random()" in NXC für NXT

Beitragvon HaWe » 1. Mär 2016 11:04

nicht ganz...
random(6) erzeugt Zahlen aus der Menge {0,1,2,3,4,5}
wenn man dann immer 1 addiert, erhält man Zahlen aus der Menge {1,2,3,4,5,6}

(CMIIW)
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Peter28
Schreibt viel
Schreibt viel
Beiträge: 185
Registriert: 2. Nov 2013 21:44
Wohnort: Schmallenberg

Re: Einsatz von "Random()" in NXC für NXT

Beitragvon Peter28 » 1. Mär 2016 12:22

Bei VB und SB ist es so wie du schreibst. Hatte es auch so stehen, war mir dann plötzlich nicht mehr sicher - ups.

Benutzeravatar
Mortimore
Mindstormsfreund
Mindstormsfreund
Beiträge: 3
Registriert: 24. Feb 2016 17:44
Wohnort: Im Umkreis von Heilbronn

Re: Einsatz von "Random()" in NXC für NXT

Beitragvon Mortimore » 3. Mär 2016 20:11

Danke für eure Hilfe!
:prima:

Mortimore


Zurück zu „textbasierte Programmiersoftware“

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 20 Gäste

Lego Mindstorms EV3, NXT und RCX Forum : Haftungsauschluss