[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