<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Polar-Methode</id>
	<title>Polar-Methode - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Polar-Methode"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Polar-Methode&amp;action=history"/>
	<updated>2026-05-31T10:43:00Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Polar-Methode&amp;diff=130913&amp;oldid=prev</id>
		<title>imported&gt;Maximilian Reininghaus: /* Literatur */</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Polar-Methode&amp;diff=130913&amp;oldid=prev"/>
		<updated>2025-11-15T13:38:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Literatur&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Die &amp;#039;&amp;#039;&amp;#039;Polar-Methode&amp;#039;&amp;#039;&amp;#039; von [[George Marsaglia]] und Thomas A. Bray ist ein Verfahren zur Erzeugung [[Normalverteilung|normalverteilter]] [[Zufallszahl|Zufallszahlen]] ([[Zufallszahlengenerator]]).&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
Diese Methode geht zurück auf den [[Box-Muller-Methode|Box-Muller-Algorithmus zur Erzeugung normalverteilter Zufallsgrößen]]. Bei diesem werden die euklidischen Koordinaten verwertet. Bei der Polar-Methode werden diese euklidischen Koordinaten in [[Polarkoordinaten]] umgewandelt. Das erspart die Auswertung von trigonometrischen Funktionen.&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Man geht von zufälligen Punkten in der Ebene aus, die im Einheitskreis gleichverteilt sind. Aus deren Koordinaten werden jeweils zwei [[Normalverteilung#Definition|standardnormalverteilte]] Zufallszahlen erzeugt:&lt;br /&gt;
&lt;br /&gt;
# Erzeuge zwei voneinander unabhängige, gleichverteilte Zufallszahlen &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; im Intervall &amp;lt;math&amp;gt;[-1, 1]&amp;lt;/math&amp;gt;&lt;br /&gt;
# Berechne &amp;lt;math&amp;gt;q=u^2+v^2&amp;lt;/math&amp;gt;. Falls &amp;lt;math&amp;gt;q = 0&amp;lt;/math&amp;gt; oder &amp;lt;math&amp;gt;q \geq 1&amp;lt;/math&amp;gt;, gehe zurück zu Schritt 1.&lt;br /&gt;
# Berechne &amp;lt;math&amp;gt;p = \sqrt {\frac{-2 \cdot \ln q}{q}}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# &amp;lt;math&amp;gt;x_1=u \cdot p&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;x_2=v \cdot p&amp;lt;/math&amp;gt; sind nun zwei voneinander unabhängige, standardnormalverteilte Zufallszahlen.&lt;br /&gt;
&lt;br /&gt;
Der Punkt &amp;lt;math&amp;gt;(u, v)&amp;lt;/math&amp;gt; muss im [[Einheitskreis]] liegen (&amp;lt;math&amp;gt;q &amp;lt; 1&amp;lt;/math&amp;gt;), und es muss &amp;lt;math&amp;gt;q &amp;gt; 0&amp;lt;/math&amp;gt; gelten, da in den [[Reelle Zahl|reellen Zahlen]] der [[Logarithmus#Nichtpositive Zahlen|Logarithmus von Null]] und die Division durch Null nicht definiert sind. Anderenfalls müssen zwei neue Zahlen &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; erzeugt werden.&lt;br /&gt;
&lt;br /&gt;
Durch lineare Transformation lassen sich hieraus beliebige normalverteilte Zufallszahlen erzeugen: Die generierten Werte &amp;lt;math&amp;gt;x_i&amp;lt;/math&amp;gt; sind &amp;lt;math&amp;gt;\mathcal{N}(0,1)&amp;lt;/math&amp;gt;-verteilt, somit liefert &amp;lt;math&amp;gt;a \cdot x_i + b&amp;lt;/math&amp;gt; Werte, die &amp;lt;math&amp;gt;\mathcal{N}(b,a^2)&amp;lt;/math&amp;gt;-verteilt sind.&lt;br /&gt;
&lt;br /&gt;
== Implementierung ==&lt;br /&gt;
&lt;br /&gt;
=== Pseudocode ===&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;Prozedur&amp;#039;&amp;#039;&amp;#039; ErzeugeNormalverteilteZufallszahlen (&amp;#039;&amp;#039;&amp;#039;Referenzparameter&amp;#039;&amp;#039;&amp;#039; x1, x2)&lt;br /&gt;
   &amp;#039;&amp;#039;&amp;#039;Wiederhole&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     u = 2 * Zufallszahl - 1  // &amp;quot;Zufallszahl&amp;quot; liefert in [0,1)&lt;br /&gt;
     v = 2 * Zufallszahl - 1  //   gleichverteilte Werte&lt;br /&gt;
     q = u * u + v * v&lt;br /&gt;
   &amp;#039;&amp;#039;&amp;#039;Solange bis&amp;#039;&amp;#039;&amp;#039; (0 &amp;lt; q) &amp;#039;&amp;#039;&amp;#039;und&amp;#039;&amp;#039;&amp;#039; (q &amp;lt; 1)&lt;br /&gt;
   p = &amp;#039;&amp;#039;&amp;#039;Wurzel&amp;#039;&amp;#039;&amp;#039; (-2 * &amp;#039;&amp;#039;&amp;#039;ln&amp;#039;&amp;#039;&amp;#039;(q) / q)&lt;br /&gt;
   x1 = u * p&lt;br /&gt;
   x2 = v * p  // Rückgabe durch die Referenzparameter x1, x2&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;Ende&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== C++ ===&lt;br /&gt;
Die Polar-Methode erzeugt Werte aus der [[Standardnormalverteilung]] mit [[Erwartungswert]] 0 und [[Standardabweichung]] 1. Die folgende Implementierung in der [[Programmiersprache]] [[C++]] generiert 10 standardnormalverteilte [[Zufallszahl|Zufallszahlen]] aus jeder [[Normalverteilung]] mit Erwartungswert μ und [[Varianz (Stochastik)|Varianz]] σ und gibt sie auf der Konsole aus.&amp;lt;ref&amp;gt;Stack Exchange Inc.: [https://stackoverflow.com/questions/9123745/marsaglia-normal-random-variables-in-c Marsaglia Normal Random Variables in C++]&amp;lt;/ref&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
// Diese Funktion berechnet eine standardnormalverteilte Zufallszahl&lt;br /&gt;
double generateGaussian(double mu, double sigma)&lt;br /&gt;
{&lt;br /&gt;
    double u, v, q, p; // Deklaration der lokalen Variablen&lt;br /&gt;
    do // Diese do-while-Schleife erzeugt Zufallszahlen u und v im Intervall [-1, 1] mit 0 &amp;lt; u² + v² &amp;lt; 1&lt;br /&gt;
    {&lt;br /&gt;
        u = (rand() / ((double)RAND_MAX)) * 2 - 1;&lt;br /&gt;
        v = (rand() / ((double)RAND_MAX)) * 2 - 1;&lt;br /&gt;
        q = u * u + v * v;&lt;br /&gt;
    } while (q &amp;gt;= 1 || q == 0);&lt;br /&gt;
    p = sqrt(-2 * log(q) / q);&lt;br /&gt;
    return mu + sigma * u * p;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Hauptfunktion die das Programm ausführt&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    double mu = 0; // Deklaration der lokalen Variablen&lt;br /&gt;
    double sigma = 1;&lt;br /&gt;
    for (int i = 0; i &amp;lt; 10; i++) // Diese for-Schleife berechnet standardnormalverteilte Zufallszahlen und gibt sie auf der Konsole aus&lt;br /&gt;
    {&lt;br /&gt;
        double gaussian = generateGaussian(mu, sigma); // Aufruf der Funktion&lt;br /&gt;
        cout &amp;lt;&amp;lt; gaussian &amp;lt;&amp;lt; endl; // Ausgabe auf der Konsole&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Normalverteilung #Erzeugung normalverteilter Zufallszahlen|Erzeugung normalverteilter Zufallszahlen]]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{cite journal |first1=G |last1=Marsaglia |first2=T. A. |last2=Bray |title=A Convenient Method for Generating Normal Variables |journal=SIAM Rev. |volume=6 |number=3 |year=1964 |pages=260–264 |doi=10.1137/1006063 |language=en}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Pseudozufallszahlengenerator]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Maximilian Reininghaus</name></author>
	</entry>
</feed>