Wyzwanie
Napisz program lub funkcję, która nie pobiera danych wejściowych i wysyła wektor o długości w teoretycznie jednorodnym losowym kierunku.
Jest to równoważne losowemu punktowi na kuli opisanemu przez
powodując taką dystrybucję
Wydajność
Trzy zmiennoprzecinkowe z teoretycznie jednorodnego rozkładu losowego, dla którego równanie jest zgodne z granicami dokładności.
Uwagi na temat wyzwania
- Rozkład losowy musi być teoretycznie jednolity . Oznacza to, że gdyby generator liczb pseudolosowych został zastąpiony prawdziwym RNG z liczb rzeczywistych , spowodowałoby to jednolity losowy rozkład punktów na kuli.
- Generowanie trzech liczb losowych z jednolitego rozkładu i ich normalizacja jest nieprawidłowe: nastąpi odchylenie w kierunku narożników przestrzeni trójwymiarowej.
- Podobnie, generowanie dwóch liczb losowych z równomiernego rozkładu i stosowanie ich jako współrzędnych sferycznych jest nieprawidłowe: nastąpi odchylenie w kierunku biegunów kuli.
- Właściwą jednorodność można osiągnąć za pomocą algorytmów, w tym między innymi:
- Generowania trzech liczb losowych , i z pomocą normalnego (Gaussa) rozkład wokół i normalizować je. 0
- Generowania trzech liczb losowych, , i z równomiernym rozkładem w zakresie . Oblicz długość wektora o . Następnie, jeśli , odrzuć wektor i wygeneruj nowy zestaw liczb. W przeciwnym razie, jeśli , znormalizuj wektor i zwróć wynik. ( - 1 , 1 ) l = √
- Generowanie dwóch liczb losowych i z równomiernym rozkładem w przedziale i przekształcają je na sferyczne współrzędnych tak: , aby , i można było obliczyć za pomocą( 0 , 1 ) θ
- Podaj w swojej odpowiedzi krótki opis używanego algorytmu.
- Przeczytaj więcej na temat wybierania punktów kuli na MathWorld .
Przykłady wyników
[ 0.72422852 -0.58643067 0.36275628]
[-0.79158628 -0.17595886 0.58517488]
[-0.16428481 -0.90804027 0.38532243]
[ 0.61238768 0.75123833 -0.24621596]
[-0.81111161 -0.46269121 0.35779156]
Uwagi ogólne
- To jest golf golfowy , więc wygrywa odpowiedź wykorzystująca najmniej bajtów w każdym języku.
- Obowiązują standardowe reguły , reguły we / wy i reguły luk .
- Dołącz link Wypróbuj online lub równoważny, aby wykazać, że Twój kod działa.
- Motywuj swoją odpowiedź wyjaśnieniem swojego kodu.
pi/6 ≈ 0.5236
wyprodukować wyjście. Jest to obszar kuli wpisany w sześcian obszaru jednostkowego