[elektro] Két bit random number..
elight at gmail.hu
elight at gmail.hu
Tue Nov 26 17:02:54 CET 2013
Ahh,
Sajnos az RND(); függvénynekk C ben nálam nincs paramétere...
Nézegetem,
a Timer1 ből veszem és írom az srand( x ) értékét ..
időnként ha billentyűt nyom tulajdonképpen inicializálom a
véletlenszámot..
Tehát ha Timer1 éppen nulla, akkor is legyen legalább egy ...
egyébként beragadhat.
Meg ne az utolsó biteket lessem.
( Ki szeretném eléggé zárni, hogy ne legyen túl sokszor
a négy azonos szám egymásután. Szerintem gyakran előfordult. )
Köszi.
Üdv István
2013-11-26 16:39 keltezéssel, Palasik Sandor írta:
>> egy bevált egyszerű véletlenszám generátorra lenne szükségem
>> C-ben
>>
>> ráadásul 4 esetre , ii = { 0 , 1, 2, 3 }
>> és PIC16F -re gyógyítva.
> LFSR, azaz linear feedback shift register
>
> http://en.wikipedia.org/wiki/Linear_feedback_shift_register
>
> Csupa nulla nem lehet a regiszterben, úgyhogy az esetedben a nulla itt
> kicsit kisebb valószínűséggel fordulna elő, mint a többi kettő, de
> mondjuk 16 bitnél csak 1/65535 lenne a különbség. Szintén ugyanezért
> figyelni kell, hogy nehogy nulláról induljon.
>
> A wikipediás példa 16 bitre:
>
> lfsr = (lfsr >> 1) ^ (-(lfsr & 1u) & 0xB400u);
>
> Ezt vagy ciklusban használod, vagy leírod kétszer, aztán használhatod
> az alsó, vagy akármelyik két bitet.
>
> Ha úgy érzed, hogy rövid a 16 bit, megpróbálhatod ezt is:
>
> http://en.wikipedia.org/wiki/Mersenne_twister
>
> De ehhez 19937 bites regisztert kell csinálni :-)
>
> Palasik Sándor
>
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list