Cel
Wygeneruj ( N) losowe segmenty linii o jednakowej długości ( l), sprawdź, czy przecinają trównoległe linie równoodległe ( ).
Symulacja
Co symulujemy? Igła Buffona . Wygładź piasek w piaskownicy, narysuj zestaw równomiernie rozmieszczonych równoległych linii (nazwij odległość między nimi t). Weź prosty kij długości li upuść go Nrazy w piaskownicy. Niech liczba razy przekroczy linię c. To Pi = (2 * l * n) / (t * c)!
Jak to symulujemy?
- Weź wkład
N,t,l - Z
N, t, lwszystkich dodatnich liczb całkowitych będących - Wykonaj następujące
Nczasy:- Wygeneruj jednolicie losową współrzędną całkowitą
x,y - Z
1 <= x, y <= 10^6 x,yjest środkiem odcinka liniil- Wygeneruj jednolicie losową liczbę całkowitą
a - Z
1 <= a <= 180 - Niech
Pbędzie punktem, w którym odcinek linii przecinałby oś x - To
ajest kąt(x,y), P, (inf,0)
- Wygeneruj jednolicie losową współrzędną całkowitą
- Policz liczbę
csegmentów linii, które przecinają linięx = i*tdla dowolnej liczby całkowiteji - Powrót
(2 * l * N) / (t * c)
Specyfikacja
- Wejście
- Elastyczny, przyjmuj dane wejściowe na dowolny ze standardowych sposobów (np. Parametr funkcji, STDIN) i w dowolnym standardowym formacie (np. Ciąg, Binarny)
- Wynik
- Elastyczny, daje wydruk w dowolny ze standardowych sposobów (np. Zwrot, wydruk)
- Dopuszczalne są białe pola, końcowe i białe znaki wiodące
- Dokładność, proszę podać co najmniej 4 miejsca dziesiętne dokładności (tj.
3.1416)
- Punktacja
- Najkrótszy kod wygrywa!
Przypadki testowe
Twój wynik może się nie zgadzać z powodu losowej szansy. Ale średnio powinieneś uzyskać taką dokładność dla danej wartości N, t, l.
Input (N,t,l) -> Output
----------- ------
10,10,5 -> ?.????
10,100,50 -> ?.????
1000,1000,600 -> 3.????
10000,1000,700 -> 3.1???
100000,1000,700 -> 3.14??
TL; DR
Wyzwania te są symulacjami algorytmów, które wymagają jedynie natury i twojego mózgu (i być może pewnych zasobów wielokrotnego użytku) do przybliżenia Pi. Jeśli naprawdę potrzebujesz Pi podczas apokalipsy zombie, te metody nie marnują amunicji ! Łącznie jest dziewięć wyzwań .
amożna również utworzyć inną metodą, jeśli jest on jednolity? (myślenie o 2D Gaussa Bubble)
t > l? Dwa poniższe rozwiązania potwierdzają to założenie, co znacznie upraszcza sprawdzanie skrzyżowania.

