Ich schreibe ein Matlab-Skript, das die wiederholte Generierung von Zufallszahlen erfordert. Ich stoße auf ein Problem, bei dem, wenn ich meine Zufallsgeneratorfunktion als Parameter an eine andere Funktion übergebe, diese innerhalb der Funktion, an die sie übergeben wird, nur einmal ausgewertet wird. HierFunktion als Parameter übergeben bewertet nicht mehr als einmal Matlab
ist einige Beispiel-Code:
Das ist meine Datei ist randgen.m
:
function number = randgen()
'HELLO WORLD'
number = rand(1);
end
Hier ist meine Datei problemtester.m
:
function arr = problemtester(rgen)
firstrand = rgen();
for i = 1:1000
arr(i) = rgen();
end
Wenn ich den Befehl
x = problemtester(randgen);
HELLO WORLD
wird einmal gedruckt, und x
ist mit 1000 Kopien der gleichen Zufallszahl gefüllt, so dass die Funktion nur einmal ausgewertet werden muss, obwohl die Schleife 1000 Mal ausgeführt wurde. Warum wird diese Funktion nur einmal ausgewertet, trotz wiederholter Aufrufe, und noch wichtiger, wie kann ich sie bei jeder Schleifeniteration aufrufen?
Ich denke, Sie mischen Variablen und Funktionsnamen. –
das wäre sinnvoll, aber warum verhält es sich beim ersten Mal wie eine Funktion, sondern bei allen zukünftigen Iterationen als Variable? – nosyarg