Twoim zadaniem jest zaimprowizowanie sprzętowego generatora liczb losowych z dowolnym sprzętem.
Wyzwanie
Napisz program o następujących właściwościach:
- Drukuje albo
0
albo1
(i nic więcej). - Wynik zależy od procesu fizycznego, a nie tylko od wewnętrznego stanu komputera.
- Nie ma związku między wynikami kolejnych przebiegów (w odstępie jednej minuty).
- Wynik nie jest przewidywalny przy żadnym realistycznym wysiłku.
- Prawdopodobieństwo wyjścia
0
wynosi od 0,2 do 0,8. - Działa w mniej niż minutę z dość dużym prawdopodobieństwem.
Musisz wyjaśnić, dlaczego twój program ma te właściwości, jeśli nie jest to oczywiste.
Wyjaśnienia i ograniczenia
Poniższe może się wydawać okropnym ograniczeniem dla konkursu popularności, ale ostatecznie chodzi o to, aby zapewnić, że program pozostanie w duchu pytania, w pewnym sensie zadziała i aby uniknąć rozwiązań, które są popularne ze względu na całkowitą przesadę, ale ostatecznie raczej nudny.
- Czas systemowy nie jest liczony jako proces fizyczny.
- Możesz używać dowolnego sprzętu konsumenckiego, takiego jak 8-calowe napędy dyskietek, wyrzutnię rakiet USB i słuchawki - chyba że jest on przeznaczony do generowania liczb losowych. Sprzęt jest klasy konsumenckiej, jeśli jest produkowany seryjnie i kosztuje mniej niż 1000 $ / € / £, więc nie można używać radioteleskopów, CERN, MRI ani domowego detektora cząstek.
- Możesz jedynie przyjąć najbardziej podstawowe założenia dotyczące stanu i wyrównania sprzętu, takie jak włączenie (jeśli ma przełącznik zasilania) oraz prawidłowe zainstalowanie i funkcjonowanie. Na przykład można założyć, że napęd CD jest ogólnie zdolny do odczytu dysku i nie może zostać zablokowany, ale nie można zakładać, że jest otwarty, zamknięty lub zawiera dysk. W innym przykładzie nie można założyć, że dwa elementy sprzętu zostaną wyrównane, aby umożliwić specjalną interakcję, ale można założyć, że znajdują się one w tym samym pomieszczeniu.
- Możesz pozostawić sprzęt w dowolnym stanie, chyba że go zepsujesz.
- Możesz i musisz założyć, że sprzęt jest w środowisku naturalnym, ale nic więcej. Na przykład można założyć, że sprzęt nie jest umieszczony w zbiorniku ciekłego helu ani w wyjątkowo dźwiękoszczelnym i światłotrwałym pomieszczeniu, ani w przestrzeni. Nie można jednak zakładać obecności żadnych źródeł dźwięku i światła, z wyjątkiem tych, których można uniknąć jedynie przy radykalnym wysiłku.
- Twój program musi działać na standardowym komputerze stacjonarnym z wybranym przez użytkownika nieezoterycznym systemem operacyjnym. Możesz użyć dowolnego oprogramowania, które nie zostało specjalnie zaprojektowane do generowania liczb losowych.
- Nie możesz założyć dostępu do Internetu.
- Nie możesz zakładać, że ludzie są obecni lub nieobecni, ale możesz założyć, że nikt celowo nie ingeruje w twój program, np. Ręcznie zatrzymując wentylator lub uruchamiając program, który wyłącza mikrofon tak często, jak to możliwe.
- Możesz jedynie przyjąć najbardziej podstawowe założenia dotyczące ustawień oprogramowania. Na przykład możesz założyć, że sterowniki zostaną zainstalowane i aktywowane, ale musisz być przygotowany na wyciszenie dźwięku.
- Możesz pozostawić ustawienia oprogramowania w dowolnym stanie.
Premia
Specjalną nagrodę przyznano szczególnie krótkiemu rozwiązaniu. Było to raczej według liczby instrukcji i podobnych niż według znaków. Zwycięzcami zostali (remis zgodnie z moimi kryteriami):
- Ta odpowiedź Franki.
- Ta odpowiedź Tejas Kale.
Mogłem przyznać tylko jedną odpowiedź, a odpowiedź Tejasa Kale'a wygrana przez los.