Załóżmy najpierw, że chcesz pobrać próbkę
x + y + z = 1
0 ≤ x ≤ 1
0 ≤ y ≤ 1
0 ≤ z ≤ 1
Nie robi to żadnej różnicy, ponieważ punkt próbny nadal będzie znajdować się w żądanym obszarze z dużym prawdopodobieństwem.
Teraz pozostaje Ci próbkowanie punktu z simpleksu . W przykładzie 3d otrzymujesz dwuwymiarowy simpleks (trójkąt) zrealizowany w 3d.
Jak losowo wybrać punkt równomiernie został omówiony w tym poście na blogu (patrz komentarze).
Dla twojego problemu oznaczałoby to, że bierzesz liczb losowych z przedziału , a następnie dodajesz i aby uzyskać listę liczb . Sortujesz listę, a następnie rejestrujesz różnice między dwoma kolejnymi elementami. To daje listę liczby , która sumuje się do . Ponadto pobieranie próbek jest jednolite. Ten pomysł można znaleźć w Donald B. Rubin, The Bayesian bootstrap Ann. Statystyk. 9, 1981, 130–134.( 0 , 1 ) 0 1 n + 1 n 1n - 1( 0 , 1 )01n + 1n1
Na przykład ( ) masz trzy liczby losowe, a następnie otrzymujesz posortowaną sekwencję, a to daje różnice , a przez konstrukcję te cztery liczby sumują się do 1.n = 40.4 0.2 0.1
0 0.1 0.2 0.4 1
0.1 0.1 0.2 0.6
Inne podejście jest następujące: pierwsza próbka z hipersześcianu (o której zapominasz x+y+z=1
), a następnie normalizacja punktu próbkowania. Normalizacja jest rzutem z hypercube na d - 1 -simplex. Intuicyjnie powinno być jasne, że punkty w centrum simpleks mają więcej „punktów przed obrazem” niż na zewnątrzrere- 1. Stąd, jeśli próbkujesz równomiernie z hipersześcianu, nie zapewni to jednolitego próbkowania w simpleksie. Jeśli jednak pobierzesz próbkę z hipersześcianu o odpowiednim rozkładzie wykładniczym, efekt ten zostanie anulowany. Rysunek pokazuje, w jaki sposób zostaną pobrane próbki obu metod. Jednak wolę metodę „sortowania” ze względu na jej prostą formę. Jest również łatwiejszy do wdrożenia.