[elektro] Két bit random number..
Palasik Sandor
palasik at mail.datanet.hu
Tue Nov 26 16:39:51 CET 2013
> 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
More information about the Elektro
mailing list