<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=5492&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-03-16T10:42:07+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=5492&amp;mode</id>
<entry>
<author><name><![CDATA[Mraycek]]></name></author>
<updated>2014-03-16T10:42:07+01:00</updated>
<published>2014-03-16T10:42:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5492&amp;p=74494#p74494</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5492&amp;p=74494#p74494"/>
<title type="html"><![CDATA[Re: Jak działa srand() i inne &quot;losowe&quot; zagadnienia...]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5492&amp;p=74494#p74494"><![CDATA[
Witam, też jakiś czas temu miałem taki problem i rozwiązałem go w następujący sposób:<br />Zczytywałem ADC z niepodpiętego pinu, co dawało jakąś wartość.<br /><br />dzielenie całkowite przez dwa daje mi zero albo jedynkę, łącząc kilka takich pomiarów, których różnica w czasie była generowana przez funkcję losowania z poziomu programu, dało mi ciąg znaków w postaci binarnej.<br />Następnie zamiana na dziesiętny i po kilkuset próbach liczby wydają się dosyć losowe<br /><br />Sam pomiar, dzielenie modulo przez dwa i wyswietlanie na ekranie 0 lub 1 wygląda na losowe, zatem liczby generowane w ten sposób tym bardziej.<br /><br />(drugi sposób który testowałem to podłączenie potencjometru do pinu odczytującego ADC, rezultaty też były zadowalające)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3501">Mraycek</a> — 16 mar 2014, o 10:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rescue1]]></name></author>
<updated>2014-01-10T11:48:52+01:00</updated>
<published>2014-01-10T11:48:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5492&amp;p=64482#p64482</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5492&amp;p=64482#p64482"/>
<title type="html"><![CDATA[Re: Jak działa srand() i inne &quot;losowe&quot; zagadnienia...]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5492&amp;p=64482#p64482"><![CDATA[
Aż zmieniłem tytuł posta <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Znam te publikacje. Póki co wychodzi, ze bez dodatkowego układu ciężko samym avr`em coś zdziałać. <br />Dlatego kombinuję, żeby chociaż te kiepskie do wykorzystania dane z ADC były seedami w srand(). Da mi to bardzo małe prawdopodobieństwo, że po kolejnym włączeniu procka będą się generować takie same liczby. Oczywiście jest to możliwe, bo może się zdarzyć, ze seed zostanie &quot;zasiany&quot; wartością z ADC, która się powtórzyła. Ale prawdopodobieństwo jest małe. <br />Nic to. Popróbuje jeszcze. Jak efekty będą mizerne to trzeba będzie jednak parę elementów dołączyć i zbudować jakiś generator.<br /><br />A może ktoś tutaj już bawił się losowością w avr i ma jakiś ciekawe patenty?<br /><br />EDIT:<br /><br />Znalazłem info, że raz wywołane srand() jest ziarnem dla wszystkich wywołań rand() od jego ustawienia po wyłączenie mikrokontrolera.<br />Nie ma to jak samemu sobie odpowiadać.  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> <br />Na marginesie powiem, że zrobienie właśnie losowego srand() na samym początku programu (a na pewno przed wywołaniem pierwszy raz funkcji rand() ) faktycznie działa. Właśnie to sprawdzam empirycznie i za każdym włączeniem procka powtórek brak. Czyli chyba działa <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1819">rescue1</a> — 10 sty 2014, o 11:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2014-01-10T11:08:59+01:00</updated>
<published>2014-01-10T11:08:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5492&amp;p=64477#p64477</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5492&amp;p=64477#p64477"/>
<title type="html"><![CDATA[Re: srand()... jak dokładnie działa?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5492&amp;p=64477#p64477"><![CDATA[
Rzeczywiście ADC to słaby generator liczb losowych, ktoś nawet zadał sobie trud by to zbadać: <a href="http://skemman.is/stream/get/1946/10689/25845/1/ardrand.pdf"  class="postlink">http://skemman.is/stream/get/1946/10689/25845/1/ardrand.pdf</a>. Ale są inne pomysły (rozwiązanie sprzętowe): <a href="http://robseward.com/misc/RNG2/"  class="postlink">http://robseward.com/misc/RNG2/</a> dyskutowany i zmodyfikowany w tym wątku: <a href="http://forum.arduino.cc/index.php?PHPSESSID=7vekl4daen17sdkr04fe9k3mr7&amp;topic=77695.msg780712#msg780712"  class="postlink">http://forum.arduino.cc/index.php?PHPSESSID=7vekl4daen17sdkr04fe9k3mr7&amp;topic=77695.msg780712#msg780712</a>. Tu z kolei mądre głowy wyjaśniają dlaczego zastosowanie niepodłączonego pinu cyfrowego nie jest dobre do generowania: <a href="http://electronics.stackexchange.com/questions/50476/random-number-generators-using-a-gpio-pin"  class="postlink">http://electronics.stackexchange.com/questions/50476/random-number-generators-using-a-gpio-pin</a><br />Ciekawy i dosyć obiecujący pomysł oparty na watchdogu tutaj: <a href="http://forum.arduino.cc/index.php?PHPSESSID=aplvfr7mrevjm19r872atjssk5&amp;topic=77695.msg780627#msg780627"  class="postlink">http://forum.arduino.cc/index.php?PHPSESSID=aplvfr7mrevjm19r872atjssk5&amp;topic=77695.msg780627#msg780627</a>. <br />Pewnie wszystko to już znasz, więc zamieszczam to tylko dla porządku <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br />Aha, co do postawionego pytania: nie mam pojęcia <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 10 sty 2014, o 11:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rescue1]]></name></author>
<updated>2014-01-10T11:38:03+01:00</updated>
<published>2014-01-10T01:29:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5492&amp;p=64467#p64467</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5492&amp;p=64467#p64467"/>
<title type="html"><![CDATA[Jak działa srand() i inne &quot;losowe&quot; zagadnienia...]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5492&amp;p=64467#p64467"><![CDATA[
Robię sobie ustrojstwo, w którym wymagana jest dość porządna pseudolosowość.<br />Oczywiście kombinowałem z losowością odczytując na LCD szum z niepodpiętego pinu przez ADC. Ale zakres tych liczb był owszem losowy, ale w dość wąskim zakresie. Dopiero jak długim kablem ów pin podłaczyłem do karnisza to zakres zrobił się satysfakcjonujący  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> Generatora szumu nie chcę wstawiać. Więc stwierdziłem, że pseudolosowość przełknę, ale pod warunkiem ustawienia funkcji srand(). <br /><br />Więc wymyśliłem, że z tego ADC odczytuje sobie szum ... tyle, że na m88. Robię sobie szumową losową zmienną RND, po czym wstawiam ją do funkcji srand.<br />czyli: <br />Odpalam ADC<br />Robię pomiar szumu z ADC i zapisuję do zmiennej RND<br />Zmienną RND wstawiam do funkcji SRAND o tak: srand(RND);<br />Wyłączam ADC, żeby procka nie obciążać ciągłym próbkowaniem i zaczynam program główny.<br /><br />Ale właśnie nie wiem czy raz tak ustawiona funkcja srand na początku programu będzie aktywna dla wszystkich użyć rand() od momentu jej ustawienia do wyłączenia uC ? Czy przed każdym użyciem rand() należałoby zmieniać ziarno srand()?<br /><br /> <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1819">rescue1</a> — 10 sty 2014, o 01:29</p><hr />
]]></content>
</entry>
</feed>