The MASM Forum Archive 2004 to 2012

General Forums => The Laboratory => Topic started by: ahmad on January 08, 2006, 03:50:15 AM

Title: Ranom number generator
Post by: ahmad on January 08, 2006, 03:50:15 AM
Hi,
I have a problem in getting procedure that genrate 16-bits number using LFSR techinque, if any body could please help me. I'm using Pentium 4 processor.
Thanks
Title: Re: Ranom number generator
Post by: dsouza123 on January 08, 2006, 07:55:33 AM

.586
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\m32lib\masm32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\m32lib\masm32.lib

.data
  tap    dd  10000001b        ; 81h  2 taps, bits 7,0  best with an even count of taps
  init   dd  00110111b        ; 37h  any starting value but 0 is OK
                              ; output bit is shifted from bit 7 to bit 8
                              ; new bit 0 is odd parity of value of tap masked bits before shift
                              ; ex: value before shift AND tap, if odd parity, then x=1, else x=0
                              ; new value = (value after shift AND 255) plus x
  szAns      db  256 dup (0)  ; bit output of LFSR converted to ASCII 0s,1s string
                              ; max output bits 2^8 - 1 for 8-bit LFSR

  szCaption  db  "8-bit LFSR, tap 81h, init xxh", 0

.code
start:
  mov edx, 0
  mov ecx, 0
  mov edi, 0
  mov eax, init

  .repeat
    mov dl, al
    shl eax, 1
 
    add ah, 30h
    mov [edi+szAns], ah
    inc edi
 
    and edx, tap
    setpo cl
    add eax, ecx
    and eax, 255
  .until eax == init

  invoke MessageBox, NULL, addr szAns, addr szCaption, MB_OK

  invoke ExitProcess, NULL
end start
Title: Re: Ranom number generator
Post by: ahmad on January 14, 2006, 05:34:50 PM
Thank you Very Much
and I have tried for another implementaion for that procedure and I have the following result.
.DATA
SEED  DW 1000000000010110B ; Intialazation of the REG.
MASK DW 10001101B
;*********************(Random Number Generator)*************
RANDOM PROC NEAR
   PUSHA
   MOV CX,65535 ; To do the operation
   L1:
   MOV AX,SEED
   SHR SEED,1
   AND AX,MASK
   MOV BX,AX
   MOV AL,0
   MOV CX,16
   L2:RCL BX,1
   ADC AL,0 ;
   LOOP L2
   MOV NUMBEROFONES,AL
   AND NUMBEROFONES,1
   JZ DONE ;If it is ZERO then go to DONE to Display 
   OR SEED,8000H
DONE:   MOVZX EAX,SEED
   CALL DISPGEN ; this procedure for display the number
   CALL NEWLINE; procedure for each line
   LOOP L1
   POPA
   RET
RANDOM  ENDP
Title: Re: Random number generator
Post by: Mark Jones on February 26, 2006, 01:47:41 AM
Here's one of Agner Fog's routines bundeled with a console app for generating random datafiles up to 4GB. Also illustrates a way to buffer 512kb chunks to disk. ENT.exe included:


Entropy = 7.999858 bits per byte.

Optimum compression would reduce the size
of this 1234567 byte file by 0 percent.

Chi square distribution for 1234567 samples is 242.10, and randomly
would exceed this value 50.00 percent of the times.

Arithmetic mean value of data bytes is 127.4888 (127.5 = random).
Monte Carlo value for Pi is 3.142772440 (error 0.04 percent).
Serial correlation coefficient is 0.000317 (totally uncorrelated = 0.0).

[attachment deleted by admin]
Title: Re: Ranom number generator
Post by: Mark Jones on March 02, 2006, 01:03:57 AM
Has anyone tried the AMD Core Math Library (http://developer.amd.com/acml.aspx) yet? The CDECL library contains lots of maths of course plus some new random number functions. Apparently you need a redistribution license from AMD to include the library with your apps though... anyone do this yet? Curious what's involved.
Title: Re: Ranom number generator
Post by: P1 on March 02, 2006, 02:46:47 PM
Is this homework?

Regards,  P1  :8)
Title: Re: Ranom number generator
Post by: Mark Jones on March 02, 2006, 08:43:15 PM
Heck naw! :P Just curious. IF I ever get a college degree, it'll probably be in electronics. ::)