Skocz do zawartości
Forum Kopalni Wiedzy

Jajcenty

Użytkownicy
  • Liczba zawartości

    4919
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    135

Zawartość dodana przez Jajcenty

  1. No to mózg mi się zlasował. Warunki: kólko x2 + y2 = 1, losuję 4 punkty z kwadratu o boku czyli: "s = 2 * bok * Rndm.NextDouble() - bok;" losuję tak długo aż uzyskam 1e6 cięciw - przypadki styczne i bezsieczne pomijam. Wyniki (bok kwadratu, częstość) 1 - 0,683684 2 - 0,54534 4 - 0,511776 8 - 0,503993 16 - 0,500221 32 - 0,499648 64 - 0,499362 128 - 0,500667 256 - 0,499757 512 - 0,499449 1024 - 0,500055
  2. No nie, chcę mieć elewację od 0 do 2PI. Twój sposób losuje tylko pół okręgu. Wyniku to nie zmieni, ale zarzutów o nie przemiatanie omegi nie odeprę. Pomyślałem, że wrócę do losowania dwóch punktów (prostej) i połączę to z liczeniem PI z Igły Buffona - to powinno dać pogląd na jakość losowania.
  3. O to to to! Z ust mnie wyjąłeś. Skończył mi się czas na zabawę, więc jeszcze tylko - specjalnie dla Astro - wersja w układzie współrzędnych biegunowych. Okrąg o promieniu 1 ze środkiem w biegunie czyli phi=1; Losuję dwa punkty na okręgu. private static ulong RunEvenFaster(ulong howManyTimes) { double ang; ulong hits = 0; Random rndm = new Random(DateTime.Now.Millisecond); do { ang = Math.Abs(TwoPI * rndm.NextDouble() - TwoPI * rndm.NextDouble()); hits += (ang > PI23 && ang < PI43) ? 1UL : 0UL; } while (--howManyTimes > 0); return hits; } Wykorzystałem Twój pomysł na inline oraz pomysł Pogo na ifa bez robienia wypukłego z wklęsłego. Urwaliście jakieś 15% czasu wykonania. Pogo urwał 10 Na pewno jeszcze spróbuje wyjaśnić problem z pierwszym podejściem, które dało dwie trzecie z okładem, ale to już na Wielkanoc. Aha, no i jeszcze: A jednak 1/3!
  4. A rwał nać. Dzięki. Losuję dwa kąty z przedziału 0-2Pi radianów. Różnica tych kątów to kąt środkowy... i kupa... dzięki. Właśnie zrozumiałem - pomyliłem kąt środkowy z wierzchołkiem trójkąta. Robiłem poprawkę o PI żeby dostać kąt ostry. Ach, te radiany. No nic, trzeba będzie jeszcze nad tym popracować. EDIT: Uff, Wszechświat wrócił na swoje miejsce. 0.333346200 (1e9 prób) Lubię ten wynik. Losuję dwa kąty względem osi X. Jeżeli ostry kąt środkowy między nimi jest większy od 2/3PI to mamy sukces - Cięciwa jest dłuższa. Jeśli wychodzi rozwarty to odejmujemy od 2PI (credits goes to Astro) i znowu mamy ostry. hm, a dlaczego? private static byte IsLongerThanSide(double ang1, double ang2) { ang1 = Math.Abs(ang1 - ang2); if (ang1 > PI) ang1 = TwoPI - ang1; if (ang1 > PI*2/3) return 1; return 0; }
  5. a)PI/3 b)bo w ciele głównej pętli będę mógł elegancko napisać: if(IsLongerThanSide(a1,a2)) hits++; co będzie bardziej czytelne dla purystów. Sam ja wyrobnik, w przypływie szaleństwa oszczędności, na swoje cele napisałem: private static byte IsLongerThanSide(double ang1, double ang2) { ang1 = Math.Abs(ang1 - ang2); if (ang1 > PI) ang1 -= PI; if (ang1 > PIby3) return 1; return 0; } By potem w pętli użyć ciasnego: hits+=IsLongerThanSide(double ang1, double ang2); Będziemy gadać o moim stylu programowania, albo co gorsza przystosowywać go tak by zyskał Twoją akceptację? Niestety nie. Normalnie jak ślusarz do puzonisty: panie!, ja jestem ślusarz, to się musi dać wyjąć.i tego się będę trzymał. Co ciekawe moje próby losowe nie zbliżają się dają żadnego z rozwiązań Bertranda. Ostatnia próba z kątami daje: 0,5555 - zmusza mnie to do myślenia nad sposobami weryfikacji algorytmów edit: Oto ostatnia wersja, Wynik 0.555559484 dla 1e9 prób class Program { const double PI = Math.PI; const double TwoPI = Math.PI * 2; const double PIby3 = Math.PI / 3; static void Main(string[] args) { ulong howManyTimes = ulong.Parse(args[0]); ulong hits = DoRun(howManyTimes); Console.WriteLine(hits); Console.ReadLine(); } private static ulong DoRun(ulong howManyTimes) { double ang1, ang2; ulong hits = 0; Random rndm = new Random(DateTime.Now.Millisecond); do { ang1 = TwoPI * rndm.NextDouble(); ang2 = TwoPI * rndm.NextDouble(); hits += IsLongerThanSide(ang1, ang2); } while (--howManyTimes > 0); return hits; } private static byte IsLongerThanSide(double ang1, double ang2) { ang1 = Math.Abs(ang1 - ang2); if (ang1 > PI) ang1 -= PI; if (ang1 > PIby3) return 1; return 0; } }
  6. To jaka jest wartość dodana skoro natychmiast wracamy do prostokątnego? A z losowania [0,2PI] jest taki zysk że obliczenia są prostsze: private static bool IsLongerThanSide(double ang1, double ang2) { ang1 = Math.Abs(ang1 - ang2); if (ang1 > PI) ang1 -= PI; return (ang1 > PIby3); } edit: To dopiero pomysł. Jeszcze nie sprawdziłem poprawności.
  7. Oj. Według dokumentacji: Random.NextDouble() Returns a random floating-point number that is greater than or equal to 0.0, and less than 1.0. Ja to se tylko przeskalowałem do wygodniejszego środka układu. Elementarne. Nie kłamałem. Układ biegunowy zostawiam sobie na koniec. Teraz w planie mam losowanie dwóch kątów z [0, Pi] i znalezienie błędu w pierwszym podejściu Oczywiście, jednak paradoks kładzie teorię. Wyjątek też kładzie teorię.
  8. wylosowana prosta jest postaci y =_ax +_b; poniższe próbuje znaleźć długość cięciwy. rootofthree = sqrt(3) public int Bertrand() { double a2 = _a * _a; double b2 = _b * _b; double minusB = -(2 * _a * _b); double twoA = 2 * (a2 + 1); double delta = 4 * (a2 - b2 + 1); if (delta < 0) return -1; if (delta == 0) return 0; double x1 = (minusB - Math.Sqrt(delta)) / twoA; double x2 = (minusB + Math.Sqrt(delta)) / twoA; double y1 = _a * x1 + _b; double y2 = _a * x2 + _b; double len = SegmentLength(x1, y1, x2, y2); if ( len > rootofthree) return 1; return 0; } i główna pętla: static double Test() { Circle c = new Circle(); long counter = 0; int result = 0, success = 0; do { result = c.Bertrand(2 * generator.NextDouble() - 1.0d, 2 * generator.NextDouble() - 1.0d, 2 * generator.NextDouble() - 1.0d, 2 * generator.NextDouble() - 1.0d); if (result >= 0 ) { if (result > 0) success++; counter++; } } while (counter < repetitions); return (double)success/ counter; } Chcę policzyć prawdopodobieństwo że losowo wybrana cięciwa okręgu będzie dłuższa od boku trójkąta równobocznego wpisanego w ten okrąg. Bardzo precyzyjnie postawione zadanie, mające bardzo precyzyjne rozwiązanie w postaci: licznośćsukcesów/licznośćomega. Nie wiem dokładnie co złego jest w rozwiązaniach Bertranda. Podejście drugie i trzecie losują punkt, czyli pęk cięciw, a Bertrand z tego pęku arbitralnie wybiera jedną, fajną, dłuższą od boku trójkąta. Wydaje mi się to podejrzane.
  9. Podejście kwantowe daje mi wynik 1/3. (A jednak ) Dyskretny okręg składa się z punktów ponumerowanych [1,N]. cięciwa między punktami o numerach s i t jest dłuższa od boku trójkąta r. jeżeli (t-s) > 1/3N i (t-s)< 2/3N (kto nie wierzy ten rysuje) - takich cięciw wychodzących z punktu 1 jest ... 1/3N Jak widać granica w N->inf nie zależy od N i jest 1/3. Policzmy na palcach wszystkie cięciwy: private static ulong Count(ulong N) { ulong hits = 0, _13N = N / 3, _23N = 2 * N / 3, length; for (ulong s = 1; s <= N; s++) { for (ulong t = s + 1; t <= N; t++) { length = t - s; if (length < _23N && length > _13N) hits++; } } return hits; } Wyrażenie p = Count(N)/((N*(N-1)/2); zwraca 0,33333 dla wielu wartości N. Nie radzę tego puszczać dla N > 1e5 - robi nudno. Pozostaje mi wyjaśnić gdzie zmaściłem mój program losowo intuicyjny i zaprojektować parę innych. Pierwsza myśl to liczyć średnią, ale wyszło mi bez sęsu Jestem pewien że wniosek z paradoksu B. jest dokładnie odwrotny: jeśli przyjęty podział jest zły, to uzyskany wynik jest też bardzo... niedobry. Takie przypadki pomijam. Wyróżnik jest ujemny - odpuszczam nie zwiększając licznika prób.
  10. Ja losuję 4 double z przedziału 0-1.0 i traktuję jako współrzędne dwóch punktów wyznaczających cięciwę. W planach mam losowanie jednego punktu i kąta z 0-pi. Tak zrobiłem i wyszło mi 1/3, ale widzę że zapomniałem o n-1. znaczy w dyskretnym kole jest n(n-1)/2 cięciw - to trochę zmienia rachunki ;D
  11. Losuję prostą o której wiem, że może być cięciwą i u mnie jest jest ich więcej niż się śniło Bertrandowi. Ale nic to. Jeszcze się nie poddałem Tak widzę to Jednak 0,317 to całe kilometry od 0,333 ;D
  12. Cześć Wam! Od lat, niejaki Bertrand dręczy mnie, takim oto paradoksem (https://pl.wikipedia.org/wiki/Paradoks_Bertranda). Jakie jest prawdopodobieństwo, że losowa cięciwa okręgu będzie dłuższa od długości boku trójkąta równobocznego wpisanego w tenże okrąg? Bertrand podał trzy różne, na oko prawidłowe, rozwiązania. Osobiście obstawiam wynik 1/3, nawet przeprowadziłem rozumowanie, które tego dowodzi. Postanowiłem zbadać rzecz empirycznie i napisałem program który losuje trochę cięciw i wylicza częstość. I...porażka! Nie mogłem się bardziej mylić. prób 10^9 Bertrand: 0.683362467 Uzyskany wynik nie przystaje do żadnego wyniku podanego przez Bertranda (1/3; 1/2; 1/4). Mój wynik to coś w pobliżu 2/3 z kawałkiem Liczba prób nie ma dużego znaczenia: dla 10^4 Bertrand: 0.6839 Celowo nie podaję algorytmu by nie psuć Wam zabawy. Proponuję bowiem konkurs na programik do losowania cięciw i rozstrzygnięcie paradoksu.
  13. Bez sensu ciągnę ten wątek, ale sam napisałeś jak ważna jest terminologia: Przedmiot ma trzy z czterech cech wymaganych przez definicję (koniunkcja). Spełnia wymogi definicji? W mojej opinii: nie - na mocy tabeli prawdy dla koniunkcji. Jeśli przyjmiemy pierwsze zdanie z wiki: Podatek – obowiązkowe świadczenie pieniężne pobierane przez związek publicznoprawny (państwo, jednostka samorządu terytorialnego) bez konkretnego, bezpośredniego świadczenia wzajemnego. to pojęcie "podatek celowy" staje się oksymoronem*. Wydaje mi się, że tak naprawdę chodzi Ci o koszt pracy. Ale po tylko przypuszczenie. * oksymoron - natleniony idiota? Właśnie to zobaczyłem
  14. https://pl.wikipedia.org/wiki/Podatek Zgodnie z polskim prawem daniny, aby zostały uznane za podatki muszą posiadać 4 cechy: nieodpłatność; przymusowość; powszechność; bezzwrotność <- składka emerytalna
  15. Tego nie wiesz. To zależy od długości życia. Cały problem w tym, że system jest ustawiony tak, że wypłaca więcej niż do niego się wkłada. Zatem spora część emerytów dostaje więcej niż włożyła. Czyż nie?
  16. Nie, dlaczego? Raczej zakładem. W końcu wiadomo ile wpłaciłem i tyle mi wypłacą. A jak wygram ten zakład wzajemny i będę dostatecznie długo żył to nawet mogę wyjść do przodu na tym
  17. A OC? Też ci składka przepada. W tym sensie jak komuś samochodu nie pognieciesz to masz czystą stratę. Usługą jest tu gotowość świadczenia.
  18. Oj. Musimy ludzi przymuszać do odkładania pieniędzy na później, a chcemy by więcej płodzili bo później... Biorąc pod uwagę koszt wyprowadzenia potomstwa to naprawdę lepiej wychodzi ropa czy złoto Mamy tu generalnie problem z odraczaniem nagrody. Tak... A potem jak przychodzi co do czego, to trzeba takich spychać z tego mostu. Stanowczo wolę oryginalną, Ezopową wersję bajki o mrówce i świerszczu, w której mrówka ma twarde serce a nie d.pe.
  19. Mijasz się z prawdą. Składki mają swoją nazwę określającą konkretne wzajemne świadczenie.
  20. Nie. To obowiązkowe ubezpieczenie. Coś jak OC - nie zwracają Ci składki OC nawet jak nie spowodujesz wypadku, prawda? Jak anarchokapitalista, anarchokapitaliście: nie broń utopii. Nie ma państwa bez podatków.
  21. Przesada. Orliki* są pełne starszych panów z brzuszkiem z upodobaniem kopiących się po goleniach, parki pełne biegaczy i rowerzystów gniewnie pokrzykujących na spacerowiczów i siebie wzajem. Związek między zdrowiem a ruchem jest powszechnie znany. *Kiedy usłyszałem o idei Orlików pomyślałem - zwariował. Teraz muszę przyznać, to był doskonały pomysł. Co do biegania: pierwsze 6 tygodni w armii spędziłem w biegu, potem też sporo atrakcji kładących nacisk na fizyczną stronę wojaczki, a byłem na SPR i miałem lżej niż zwykły poborowy. W armii amerykańskiej 5 mil to na rozgrzewkę. W 7 samurajach pada: wojna to bieg, jeśli nie możesz biec to umierasz. Nie wierzę by jakakolwiek armia świata zrezygnowała z tak taniego ćwiczenia
  22. Oj. Filippides biegł (podobno) osiem godzin dystans, który najlepsi teraz przebiegają w dwie. Stawiam dolary przeciwko orzechom, że biegamy te 20% szybciej.
  23. Ta laurka miałaby większość wartość, gdyby była wygłoszona przez... CNN. Każdy mógł wypuścić z siebie taki tekst. Pięta o rządzie PiS, Palikot o rządzie PO czy Urban o WRON. Z braku dostępu do obiektywnego dziennikarstwa, zapisuję Trumpowi na plus dolara i giełdę. A co do reszty: pożyjemy zobaczymy.
  24. Media, które ja czytuję urządziły regularną nagonkę na Trumpa, tak jakby od jego wizerunku w Polsce cokolwiek zależało. Powiedziałbym, że doniesienia są wręcz histeryczne. W ich świetle (tych doniesień) wygrana Trumpa jest moją osobistą katastrofą. Jednakowoż, postanowiłem poczekać z desperacją.
  25. Ano! Zrozumiałem tezę trochę poniewczasie.
×
×
  • Dodaj nową pozycję...