Skocz do zawartości
InspektorGadzet

Wielokostka do gier planszowych z wyświetlaczem OLED

Pomocna odpowiedź

@InspektorGadzet, właśnie zaakceptowałem opis!

Dziękuję za przedstawienie ciekawego projektu, zachęcam do prezentowania kolejnych DIY oraz aktywności na naszym forum 😉

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Zawsze chciałem coś takiego zrobić. W domu dużo gramy w planszówki więc może ten przykład zdopinguje mnie wreszcie do zrobienia własnej kostki 🙂

22 godziny temu, InspektorGadzet napisał:

ponadto inicjalizuje generator pseudolosu

Czym zasiewasz RNG?

22 godziny temu, InspektorGadzet napisał:

Bezczynność przez dwie minuty spowoduje przejście kostki w stan uśpienia

Trochę mało czasu jak na czas do namysłu w co cięższych grach, ale pewnie sprawdziłeś to doświadczalnie, że tyle wystarczy by odczytać i zapamiętać wynik.

A co w sytuacjach, gdy rzucamy dwoma kostkami a liczy się suma (daleko szukać: Osadnicy z Catanu). Czy przewidziałeś wprost wyświetlanie sumy? Albo inaczej: im więcej kostek używanych w ten sposób tym bardziej zbliża nas to do rozkładu normalnego - czy obsługujesz inne rozkłady niż "równomierny" brany wprost z RNG?

No i tak z ciekawości, przecież nie jest to EuroJackpot za 100 milionów, ale czy liczyłeś jakość statystyczną używanego RNG? Jak zamieniasz jego wyniki (używasz int czy float?) na wynik na kostce?

Edytowano przez marek1707

Udostępnij ten post


Link to post
Share on other sites
(edytowany)
12 minut temu, marek1707 napisał:

Czym zasiewasz RNG? 

Na razie tylko numerem seryjnym STM ale dodam jeszcze czas przeszukiwania kardy SD oraz czas po jakim nastąpiło pierwsze naciśnięcie któregokolwiek przycisku bo na razie mam inne problemy z kostką.

12 minut temu, marek1707 napisał:

A co w sytuacjach, gdy rzucamy dwoma kostkami a liczy się suma

Wystarczy zdefiniować 12 obrazków. Jedna z kostek w prototypie (żółta z cyframi) ma 12 ścian. Jest i ruletka, 37 obrazków.

12 minut temu, marek1707 napisał:

ale czy liczyłeś jakość statystyczną używanego RNG

Robiłem (jest tryb autoplay i statystyka przez UART) i nie jest dobrze. 1..6 ok, ale 1..12 czy 1..37 bardzo kiepsko. Domyślam się przyczyny i dziś zamierzam sprawdzić, czy dobrze myślę czy ślepy traf a może test trwał zbyt krótko? Powinno być kilkanaście tysięcy * zakres losowanych liczb.

12 minut temu, marek1707 napisał:

Jak zamieniasz jego wyniki (używasz int czy float?) na wynik na kostce?

Jak pamiętam int czyli 32-bity, a może uint16? Konwersja przez modulo.

Edytowano przez InspektorGadzet

Udostępnij ten post


Link to post
Share on other sites

konwersja modulo to najgorszy możliwy pomysł - rób to np. przez (r * n)/RAND_MAX

Udostępnij ten post


Link to post
Share on other sites
8 minut temu, ethanak napisał:

konwersja modulo to najgorszy możliwy pomysł - rób to np. przez (r * n)/RAND_MAX

Wypróbuję.

Udostępnij ten post


Link to post
Share on other sites
28 minut temu, InspektorGadzet napisał:

Wystarczy zdefiniować 12 obrazków. Jedna z kostek w prototypie (żółta z cyframi) ma 12 ścian

Suma dwóch kostek K6 to nie jest kostka K12. Musisz dwa razy losować i sumować a to nie to samo. Dlatego pytałem o inne rozkłady niż równomierny/jednostajny. Rozkład normalny (bo taki potrzebujesz dla sumy kostek) możesz dostać z RNG, ale trzeba trochę policzyć. Oczywiście najprościej odpalić N losowań i zsumować :)

No i to prawda, typowe generatory pseudolosowe bardzo źle wyglądają po wykonaniu modulo - dlatego pytałem podejrzewając odpowiedź. Pytanie jaki zaimplementowano w Twojej bibliotece i czy są znane wyniki jego badań.

Udostępnij ten post


Link to post
Share on other sites

Jest sposób na modulo - np. przy 32-bitowej liczbie bierzesz starsze 16 bitów i z tego liczysz modulo n. Przy niewielkich wartościach n daje to całkiem dobre wyniki.

Udostępnij ten post


Link to post
Share on other sites

Może zamiast pseudolosowości użyj przetwornika ADC. "Badaj szum" a dostaniesz dobry poziom losowości.

Można też dorzucić pseudolosowość - losowanie najpierw wejścia przetwornika, a dopiero potem pomiar napięcia.

Udostępnij ten post


Link to post
Share on other sites

A skąd weźmiesz dobry szum analogowy? Bo to też wcale trywialne nie jest. Co prawda nie trzeba go tutaj dużo, to nie kryptografia tylko kostka losowana raz na minuty, ale zawsze. Być może wystarczyłby jakiś kiepski wzmacniacz operacyjny ustawiony na x1000 z dużym opornikiem na wejściu i kilkaset mV szumu termicznego. Mierząc to coś wielokrotnie i biorąc z każdego pomiaru 1-2 LSB z ADC można by uciułać potrzebny zestaw bitów bez liczenia modulo itp. Nie, wiszące w powietrzu wejścia to jakaś internetowa legenda dla dzieci i najgorsze możliwe rozwiązanie, powielane nie wiadomo czemu w wielu miejscach.

Udostępnij ten post


Link to post
Share on other sites

Oj tam... TG3A czy jakaś dioda typu DOG da takie piękne szumy... tylko skąd to wziąć 😞

Udostępnij ten post


Link to post
Share on other sites
3 minuty temu, marek1707 napisał:

A skąd weźmiesz dobry szum analogowy?

Dobre pytanie. Aczkolwiek należy zacząć od wejścia z dołączoną "antenką", tak by zbierała śmieci.

Potem można pójść w tym kierunku:

http://mikrokontrolery.blogspot.com/2011/04/generator-liczb-losowych.html

Osobiście nie sprawdzałem, ale zaprezentowane techniki wydają się obiecujące.

Dobierając inny procesor np. z serii STM32F3 można użyć DAC'a , które potrafią generować szum biały, dodatkowo wbudowane są w mikrokontroler wzmacniacze operacyjnego z wejściem różnicowym, a to już powinno pozwolić na odpowiednie wzmocnienie sygnału, np  z jakiegoś złącza p-n.

 

Udostępnij ten post


Link to post
Share on other sites

@Zealota Proszę, daj już spokój. To że nie "czujesz" tematu szumów, ich generacji i pomiarów to widać, ale przynajmniej nie pogrążaj się "antenkami" itp rzeczami. Co wg Ciebie obiecują "zaprezentowane techniki" rodem z przedszkola? Potrafisz to ocenić czy tylko tak CI się wydaje? O wiszących pinach wejściowych już pisałem. Propozycję wykorzystania szumu pseudolosowego z DACa pominę milczeniem, bo to jak podnoszenie się za własne włosy. To już prościej zrobić własny LFSR w kodzie i obejdzie się bez kołomyi z zapętlonym DACem i ADC.

@ethanak  Nie warto szukać i przepłacać. Może i to szumiało nieźle w porównaniu do krzemu, ale I tak byłoby tego za mało w sensie amplitudy bezpośrednio dla ADC. Wzmacniacz tak czy tak jest konieczny. A skoro tak, to niech wzmacnia szumy taniego opornika. W paśmie 10kHz masz z samego rezystora 100k 4uV szumów termicznych. Do tego dodajesz marny wzmacniacz szumiący powiedzmy 35nV/sqrt(Hz) (historyczna kostka LM358). Dwa jego stopnie dadzą gain powiedzmy 400x400=160000. Na wyjściu pierwszego masz zatem lekko licząc ok. 3mV ślicznego i płaskiego szumu w paśmie do 10kHz a na wyjściu drugiego ADC widzi ponad 1.3Vrms bardzo dobrego sygnału dla kostki K6 :) To coś zadziała na pewno i nawet bez żadnej dalszej obróbki cyfrowej będzie miało bardzo dobre parametry statystyczne, w odróżnieniu od "antenek" czy podobnych wynalazków domorosłych elektroników.

Udostępnij ten post


Link to post
Share on other sites
2 godziny temu, Zealota napisał:

Może zamiast pseudolosowości użyj przetwornika ADC. "Badaj szum" a dostaniesz dobry poziom losowości.

Dobra pseudolosowośc to matematyka. Mam taki generator ale nie mogę go użyć w projektach. Taki generator "trochę" kosztuje. W prostych projektach muszę używać prostych i tanich rozwiązań.

2 godziny temu, ethanak napisał:

Oj tam... TG3A czy jakaś dioda typu DOG da takie piękne szumy

Ale wynik nie jest przewidywalny, w sensie rozkładu losowego.

Udostępnij ten post


Link to post
Share on other sites

Wynik losowy ma to do siebie, że nie może być przewidywalny.

Pamiętaj, że rozmawiamy o grze, gdzie wynik kolejnego rzutu kostką nie może być funkcją poprzednich rzutów. Inne są zastosowania generatorów pseudolosowych, a inne czysto losowych. Jeśli dr. Kouska wyrzucił pięć szóstek, to wynik kolejnego rzutu nie zależy od tego, czy traktujemy sześć rzutów jako całość (bo prawdopodobieństwo wyrzucenia sześciu kolejnych szóstek jest raczej niewielkie), czy traktujemy kolejny rzut niezależnie. Jak pisał pewien pan - nieważne, czy dr. Kouska rzucił kostką od razu, czy może w międzyczasie poszedł sobie na knedliczka 🙂

Poza tym zawsze można zamówić/kupić w sieci ciąg losowych bitów.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Napisz odpowiedź...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...