jak na 8051 zrobić losowanie liczby bez timerów

jak sensownie zrobić losowanie w ramach liczby jedno bajtowej ale bez użycia timera? będę wdzięczny za sugestie.

pozdrawiam PC

Reply to
Pablo_C
Loading thread data ...

Przecież masz w Bascomie funkcię RND

Przykład:

Dim I As Integer

Do I = Rnd(100) 'zwraca liczbę pseudolosową z zakresu 0-99 Print I Wait 1 Loop

End

Jakie znaczenie mają timery przy funkcji losowania? Nie widzę żadnego związku

Leszek Wieczorek

Reply to
Leszek Wieczorek

Użytkownik "Pablo_C" <pch[ciach]@poczta.onet.pl> napisał w wiadomości news:c5s0ve$50c$ snipped-for-privacy@atlantis.news.tpi.pl...

widziałem wielokrotnie w sieci przykłady na generator liczb pseudolosowych. Raptem parę linijek tekstu. Niestety nie pamiętam linka. Może na

formatting link
? zby

Reply to
Zbino

Najlepszy rozklad szumu i parametry stochastyczne szumu uzyskasz ze sprzetowego generatora ciagu losowego (RBG - Random Bit Generator). Podlaczasz go do dowolnej nogi procka, taktujesz transmisje z innego pinu i czytasz stan RBG - na wyjsciu daje '0' albo '1', calkiem losowo (a nie pseudolosowo).

Reply to
Adam Dybkowski

nie robie sobie jaj teraz:

- czym sie rozni losowy od pseudolosowego?

Reply to
Q

Ciag losowy i pseudolosowy wygladaja mniej lub bardziej podobnie jedynie pod katem statystyki. W przypadku ciagu pseudolosowego, znajac algorytm oraz stan wewnetrzny generatora mozna w prosty sposob obliczyc wartosc nastepna. W wiekszosci prostych generatorow stan wewnetrzny jest albo dostepny na wyjsciu, albo latwo jest go wyznaczyc. Znajac stan wewnetrzny mozna tez z latwoscia wyznaczyc wartosc wyjsciowa. Tak wiec znajomosc algorytmu i stanu generatora jest tozsama ze znajomoscia wszystkich wartosci wygenerowanych w przyszlosci.

Kolejna cecha generatorow pseudolosowych, dyskwalifikujacych je w zastosowaniach wymagajacych malej przewidywalnosci, jest powtarzalnosc. Stan takiego generatora, przy poprawnym wyborze przeksztalcenia, powroci do wartosci poczatkowej po max. 2^k krokach (gdzie k jest dlugoscia slowa stanu w bitach). Oczywiscie bardzo prawdopodobne jest ze przy nieuwaznym doborze przeksztalcenia i wartosci poczatkowej cykl zamknie sie znacznie szybciej. W przypadkach patologicznych nawet po kilku, niezaleznie od dlugosci slowa stanu.

Dla wiekszosci generatorow PRNG dostepnych w bibliotekach funkcji standardowich dostarczanych z kompilatorami czy z systemem, latwo jest wyznaczyc kolejne wartosci ciagu nawet nie wiedzac nic o konstrukcji generatora. Dosc pouczajacym doswiadczeniem jest rysowanie na ekranie punktow o wspolrzednych x,y bedacych kolejnymi wyrazami naszego ciagu "losowego". Dosc szybko mozna zauwazyc ze ukladaja sie one w wyrazne wzorki.

Jesli zainteresowal Cie problem i chcialbys poczytac sobie o metodach badania generatorow, na poczatek mozesz zerknac sobie na

formatting link
pzdr. j.

Reply to
Jacek R. Radzikowski

dzieki; /wlasnie sobie przypomnialem, ze kiedys zrobilem sobie taki wykresik; bylo tam wyrazne skorelowanie, ktorego nie zakumalem...

formatting link
pewnie, ze tak :) jeszcze raz dzieki :)

Reply to
Q

Ciag losowy jest losowy, pseudolowy jedynie tak wyglada :-) Masz racje - istotny jest cykl. Pseudolowy go posiada. Z czym sie wiaze problem jego inicjacji - po resecie wystartuje znow od jakiejs wartosci, tu sie przydaje jakies w miare losowe zdarzenie - np uruchamiamy licznik zliczajacy 10MHz i czekamy az czlowiek nacisnie przycisk.

Pomysl ze zliczaniem innych zdarzen dobry jest, ale z procka to nadal jest pseudolosowo. Tu sie uzywa jakiegos szumiacego polprzewodnika - wtedy mamy cos losowego.

No coz - to jest algorytm. Ale latwo powiedziec - wyznacz nastepna wartosc na podstawie ciagu poprzednich wartosci bez znania stanu wewnetrznego.

Dla wielu zastosowan nie ma wiekszego znaczenia. Jesli generator ma stan 32 bit, czy nawet 16 bit, to moze byc wystarczajace. Wazniejsza jest "losowosc".

Mierny generatorek ze spectrum S=((S+1)*75) mod 65537 - 1 S jest 16 bit.

J.

Reply to
J.F.

Generator _losowy_ opiera sie nie na obliczeniach, ale na procesach fizycznych, np. szumieniu diody. Wystarczy szum takiej diody wzmocnic, odpowiednio przyciac komparatorem i juz mamy generator szumu losowego. A nie jakiegos pseudoszumu powtarzalnego po pewnym czasie.

Reply to
Adam Dybkowski

ja potrzebuje wylosowac cos, cokolwiek i nie musi to byc liczba strikte losowa. chce to zrobic bardzo prosto i zastanawiam sie czy nie moge po prostu odczytac zawartosci jakichs rejestrów bo tak na chlopski rozum w danej chwili czyli tej co bede losowal trudno przewidziec co w nich bedzie. np znacznik stosu i jeszcze jakis rejestr portu czy inny. jezeli sie myle to prosze mnie sprostowac.

pozdrawiam PC

Reply to
Pablo_C

Nie tylko. Najwazniejsza chyba cecha jest deterministycznosc ciagu pseudolosowego. Z generatorow zainicjowanych takimi samymi wartosciami otrzymasz identyczne ciagi liczb. Czasami jest to porzadane (symulacje), ale czasami moze niezle namieszac.

Mozna. Pozostaje kestia rozkladu. Jedne z najlepszych generatorow PRNG obecnie konstruuje sie bazujac na dobrych przeksztalceniach kryptograficznych (szyfry, funkcje jednokierunkowe)

zliczanie zdarzen moze dac bardzo nieladny rozklad. Wystarczy ze wmiesza sie jakis sygnal okresowy. Szum polprzewodnikow tez jest iirc niezle "podbarwiony". Linuksowe urzadzenie /dev/random wykorzystuje zdarzenia systemowe do "kolekcjonowania" entropii. Losowosc generowanych liczb jest calkiem niezla, ale nie uzyskasz ich zbyt wiele: od kilku na sekunde do jednej na kilka sekund, w zaleznosci od poziomu aktywnosci systemu.

Dla generatorow kongruentnych nie jest to niewykonalne. Rejestr LFSR mozna odtworzyc z olowkiem i kartka (odpowiedniej dlugosci;)) w reku algorytmem Berlekampa-Masseya. Nawet jesli algorytm nie jest latwy do zlamania, generacja ziarna moze byc trywialna do odtworzenia (jak we wczesnych wersjach netscape)

Nie licz na to ze uzykasz cykl o maksymalnej dlugosci dla losowo wybranego przeksztalcenia. Nad dobrym wyborem trzeba sie troche napocic.

Ech... na tej maszynie po raz pierwszy sie przekonalem jak bardzo moga byc skorelowane liczby z generatora PRNG :)

pzdr. j.

Reply to
Jacek R. Radzikowski

Użytkownik "Adam Dybkowski" snipped-for-privacy@amwaw.edu.pl> napisał w wiadomości news:c5s790$vnu$ snipped-for-privacy@mamut.aster.pl

Tak mi się przy okazji wygooglało:

formatting link

Reply to
Marek Dzwonnik

On Sun, 18 Apr 2004 20:55:48 +0200, "Pablo_C"

Wskaznik stosu jest praktycznie staly - jesli go bedziesz odczytywal tylko w jednym kontekscie programu to bedzie dokladnie staly.

Na portach pojawia sie to co z zewnatrz jest zadawane - trudno sie tam spodziewac wiekszych zmian o ile nie podlaczysz czegos z zewnatrz [licznik taktowany osobnym generatorem z 10MHz].

Pozostaja liczniki '51 - ale musisz jeszcze miec jakis niezalezne zewnetrzne zrodlo zdarzen - bo inaczej nici z losowosci.

J.

Reply to
J.F.

Ja proponuje probkowac jakis prosty generator szumu bialego :)

Robert

Reply to
rwi

Użytkownik "rwi" snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:c5v3v8$euf$ snipped-for-privacy@nemesis.news.tpi.pl...

Mało napisałeś o zastosowaniu tego generatora. Jeśli losowe będzie odczytywanie tej liczby, np. przez naciśniecie przycisku przez człowieka, to możesz zrobić zwykły licznik, który biega w kółko (dość szybko) i jest sczytywany w momencie naciśnięcia. Zby

Reply to
Zbino

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.