Zufallszahl merken

gwengler shared this question 3 years ago
Answered

Ich habe eine Liste von Punktpaaren L = {{P1,P2},{Q1,Q2},{R1,R2},{S1,S},{T1,T2}} und den Punkt A.

Ich möchte nun den Inkreis von A und einem Punktpaar aus L zeichnen, wobei das Paar der Liste L per Zufall entnommen werden soll.

Variante Inkreis(A,ZufälligesElement(L)) funktioniert nicht, weil Inkreis 3 (Parameter) getrennte Punkte verlangt.

Variante Inkreis(A,Element(ZufälligesElement(L),1), Element(ZufälligesElement(L),2)) funktioniert auch nicht, weil der dritte Punkt dann nicht mehr aus dem ursprünglichen Paar entnommen wird, da der Zufallsgenerator neu initiiert wird.

Eingebaut ist dies in Iterationsliste(Mittelpunkt(Inkreis(T, ???), T, {Q}, n).

Deshalb kann ich auch nicht außerhalb der Iteration für die Trennung sorgen.

Hat jemand eine Lösung?

gwengler


Comments (5)

photo
1

Hm,

und wenn Du ein


IndexOf(RandomElement(L), L) oder einfach ein Zufallsindex 1...length(L)


vorschaltest und damit weitermachst...

photo
1

Verwende das Benutzertool im Anhang

photo
1

Erweiterte Version:

Das Benutzertool TC entspricht dem Befehl Dreieckspunkt.

Dies mit der Ergänzung, dass alle Parameter von Dreieckspunkt in einer (1) Liste zusammengefasst sind.

Diese Liste ist in 2 Elemente unterteilt: eine Liste von 3 Punkten und die ETC-Nummer

TC=({{Punkt, Punkt, Punkt},ETC-Nummer})

Note: das scheint die einzig mögliche Syntax zu sein, die in einem entsprechenden Benutzertool richtig interpretiert wird. Also nicht zB: TC({pnt,pnt,pnt},ETC) oder TC({pnt,pnt,pnt,ETC}). Also: Wenn Liste als Input-Parameter für ein Benutzertool, dann nur 1 Benutzertool-Parameter (genau 1 Liste) und innerhalb einer (sub-)Liste keine unterschiedlichen Objekt-Typen.

photo
1

Meine obigen Kommentare lösen das Problem dadurch, dass es nicht notwendig ist den Zufallswert sich als eigenständiges Objekt zu merken, da er nur einmal benötigt wird.

Falls das nicht möglich wäre: folgende Lösung:

ausgehend von Iterationsliste(Mittelpunkt(Inkreis(T, ???), T, {Q}, n)

wird der Parameter T nicht als Punkt sondern als Liste (alle Elemente vom selben Typ) behandelt, Das erste Element enthält den neuen Punkt mit dem Initialwert Q und das zweite Element den Zufallswert, der im folgenden Zyklus mehrfach benötigt wird. Der Zufallswert wird als x-Wert in einem pseudoPunkt gekapselt, sodass die Liste T lauter Objekte mit demselben Typ enthält, das ergibt neu:

Iterationsliste(Mittelpunkt(Inkreis(Element(T,1), ???), T, { {Q, (Zufallszahl(1,Länge(L)),0) } }, n)

Das ???? sind die Beiden Punkte die in L als Subliste mit dem Index x(Element(T,2)) bestimmt sind.

x(Element(T,2) ist also der als Zufallswert auf dessen Wert man sich mehrmals beziehen kann.

also für den ersten Punkt: Element(L, x(Element(T,2)),1)

und für den zweiten Punkt Element(L, x(Element(T,2)),2)

und alles zusammengesetzt:

Iterationsliste(Mittelpunkt(Inkreis(Element(T,1), Element(L, x(Element(T,2)),1), Element(L, x(Element(T,2)),2)), T, { {Q, (ZufallsZahl(1.Länge(L)),0) } }, n)

Es fehlt aber noch der neue Zufallswert für den nächsten Zyklus !!!!

Also:

Iterationsliste( { Mittelpunkt(Inkreis(Element(,T,1), Element(L, x(Element(T,2)),1), Element(L, x(Element(T,2)),2)) , (Zufallszahl(1,Länge(L)),0) }, T, { {Q, (Zufallszahl(1.Länge(L)),0) } }, n)

--------------------------------------------

Schwierig zu lesen und zu verstehen. Und schwerfällig da die Listenelemente mit Element(<liste>,<ndx>) angesprochen werden müssen statt mit: <liste>(<ndx>)

Aber es funktioniert, wie der Anhang -- mit Dreieckspunkt, statt mit Mittelpunkt(Inkreis) -- zeigt.

photo
1

Herzlichen Dank! War sehr dienlich! Anbei meine Umsetzung:

© 2023 International GeoGebra Institute