Frage von Beiba, 27

Wie gibt mir MATLAB -1 oder 1 zufällig zurück?

Ich brauche eine Funktion die -1 oder 1 mit einer Wahrscheinlichkeit von 1:1 zurück gibt.

Antwort
von PeterKremsner, 27

Nimm random oder rand

Ich glaube die geben zwar nur das Intervall (0,1) aus aber du kannst zb rechnen 2*rand() - 1 das wäre dann (-1,1)

Kommentar von Beiba ,

das gibt aber Werte zwischen -1 und 1 aus

Kommentar von PeterKremsner ,

Asoo sorry habs falsch verstanden:

Wenn du nur -1 und 1 willst kannst du so vorgehen

if(rand() >= 0.5)

  1 ausgeben

else

  -1 ausgeben

Das sollte dann auch immer noch Gleichverteilt sein

Kommentar von martin7812 ,

Das kann man natürlich auch so schreiben:

2*(rand()>=0.5)-1

By the way:

Im Gegensatz zu C schreiben sich Funktionen ohne Argumente in Matlab meines Wissens ohne leere Klammern. Also nicht "rand()", sondern nur "rand":

2*(rand>=0.5)-1
Kommentar von PeterKremsner ,

Naja man kann rand Argumente übergeben, zB kann man sagen dass man eine Matrix möchte usw. Darum habe ich absichtlich rand() geschrieben um zu verdeutlichen, dass es Argumente geben könnte.

Wenn es aber ohne Argumente aufgerufen wird ist es richtig die Klammer wegzulassen, wobei in Mathlab R2013b beide Varianten funktionieren.

2*(rand>=0.5)-1

Kann man auch schreiben, wobei ich die Lesbarkeit mit dem if besser finde, da es nicht wie im dem Fall zu einer Impliziten Typumwandlung kommt. Ist aber Geschmackssache.

Keine passende Antwort gefunden?

Fragen Sie die Community