Zufällige Auswahl aus Liste < Mathematica < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 23:04 Di 03.10.2006 | Autor: | derben |
Hallo zusammen,
kann mir jemand von euch sagen wie man mit Mathematica aus einer Liste von Zahlen eine zufällig auswählen läßt?
Ich habe zum Beispiel durch die Funktion Random drei (sortierte) Stichproben erzeugt
Stich:=Table[Random[Integer, {-100, 100}], {10}];
SeedRandom[5]; {Sort[Stich], Sort[.Stich], Sort[Stich]}
Der Output von obigen ist:
{{-75, -69, -67, -22, -16, -12, 65, 86, 87, 88}, {-99, -97, -55, 14, 21, 29,
38, 55, 55, 81}, {-95, -87, -45, -36, -30, 28, 39, 44, 71, 99}}
Ich möchte nun aus jeder der drei Zahlenlisten eine Zahl beliebig auswählen. Hat jemand eine Idee wie das geht? Gibt es da eine spezielle Funktion für?
Grüße derben
ch habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
In[1]:= Stich := Table[Random[Integer, {-100, 100}], {10}];
SeedRandom[5];
drei = Sort /@ Table[Stich, {3}]
Out[3]=
{{-75, -69, -67, -22, -16, -12, 65, 86, 87, 88},
{-99, -97, -55, 14, 21, 29, 38, 55, 55, 81},
{-95, -87, -45, -36, -30, 28, 39, 44, 71, 99}}
Ich nehme an, dass Du die drei Werte in einer Liste haben möchtest:
In[4]:= Map[Function[lst, Part[lst, Random[Integer, {1, Length[lst]}]]], drei]
Out[4]= {65, -55, 28}
da die Länge der Teillisten bekannt ist, geht das auch kürzer (Kurzschreibweisen für Map und Function sind auch noch dabei):
In[5]:= (#1Random[Integer, {1, 10}] & ) /@ drei
Out[5]= {-12, -97, -45}
und falls Du die Werte lieber Variablen zuweisen möchtest:
In[6]:= {x, y, z} = (#1Random[Integer, {1, 10}] & ) /@ drei;
x
y
z
Out[7]= -67
Out[8]= 14
Out[9]= 99
In[10]:= Clear[x, y, z];
Ein völlig anderer Ansatz für Leute mit zu viel Zeit:
In[11]:=
Timing[
FindInstance[(Times @@ (drei#1 - x[#1]) == 0 & ) /@ {1, 2, 3},
x /@ {1, 2, 3}, 5]
]
Out[11]= {4.859*Second,
{{x[1] -> -75, x[2] -> 55, x[3] -> -45}, {x[1] -> -22, x[2] -> -55,x[3] -> 44},
{x[1] -> -16, x[2] -> 21, x[3] -> 39}, {x[1] -> 86, x[2] -> -55, x[3] -> -45},
{x[1] -> 87, x[2] -> 14, x[3] -> 44}}}
oder
In[12]:=
Timing[
FindInstance[(Or @@ Thread[x[#1] == drei#1] & ) /@ {1, 2, 3},
x /@ {1, 2, 3}, 5]
]
Out[12]={1.016*Second,
{{x[1] -> -75, x[2] -> 55, x[3] -> -45}, {x[1] -> -22, x[2] -> -55,x[3] -> 44},
{x[1] -> -16, x[2] -> 21, x[3] -> 39}, {x[1] -> 86, x[2] -> -55, x[3] -> -45},
{x[1] -> 87, x[2] -> 14, x[3] -> 44}}}
______________________________________________________________________________
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_|
Ich hoffe, damit etwas geholfen zu haben,
Peter
P.S. denke Dir die kleinen Bücher bitte als doppelte eckige linke Klammer. also Zeile "In[5]" wäre $\#\text{Random}[\text{Integer},\{1,10\}]\&\text{/@}\text{drei}}$
Anhang: Notebook
Dateianhänge: Anhang Nr. 1 (Typ: nb) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:12 Do 05.10.2006 | Autor: | derben |
Hallo,
"Ich hoffe, damit etwas geholfen zu haben,"
"etwas" ist gut. Das bringt mich (zumindest gefühlt) meilenweit voran. Danke!
So kann ich ich mich direkt den nächsten Baustellen widmen .
Grüße derben
|
|
|
|