Come generare numeri casuali tra i 44 a 55?

V

venkatec

Guest
Ciao Cari Frnds,

Come per la generazione di numero casuale compreso tra 44 a 55 in Verilog o VHDL?

 
utilizzando LFSR (Linear feedback Shift Register) e può generare numeri pseudo-casuali di 3 li uso a 44 bit in modo che si u numeri casuali da 44 a 52, ora aggiungere due diversi bit LFSR da registro a questo u avranno numeri casuali tra i 44 e 55.

 
Penso che se si utilizza un LFSR che hanno un periodo molto lungo dovrebbe dare una distribuzione uniforme, ma come lei dice che non può.Tuttavia quello che è altro modo per ottenere una distribuzione uniforme?

 
Con l'aggiunta di due numeri casuali, è già cambiare la distribuzione.È possibile utilizzare una mappatura del 1 ... 2 ^ n-1 LFSR numero di serie a 44 .. 55 da una tabella o di una operazione mod 12.In caso di un sufficiente LFSR bitwidth, la distribuzione unsymmetry è solo piccole.Diminuzione del numero indesiderati è
un'altra opzione.

 
Siamo spiacenti, come non sono in grado di ottenere come siete la generazione di numeri casuali, è possibile elaborare più che plz ...

 
LFSR generatori di numeri casuali hanno una distribuzione uniforme sul loro rispettivo numero di serie 1 ... 2 ^ n-1, dove n è il numero di fasi.

Per ottenere una distribuzione uniforme su gamma 44 .. 55 respectvively 0 .. 11, avete bisogno di una mappatura che mantiene il uiniformity.

Mi è stato discusso diverse mappatura opzioni: ad esempio guardare la tabella o mod 12 operazione.Il tuo suggerimento originale crea anche una mappatura, ma viola l'uniformità e ha una serie di 0 .. 10 invece di richieste 0 .. 11.

 
Grazie per le tue risposte,

Come genrate non casuale tra una gamma (Es: Prendere alcune rane da 55 a 71) utilizzando il comando $ casuale in Verilog.

 
Hi Frnd,

I tryed per utilizzare la sintassi hai dato, ma la sua stampa di diversi valori
che sono in serie non
segue il codice qui
-----------
modulo di prova ();
reg uno;
reg b;
REG C;
filo fuori;
reg [7] gamma;

sempre
ripetere (24)
iniziare
# 100
a = 1'b1;
b = 1'b1;# 100
a = 1'b0;
b = 1'b1;

finesempre @ (uno o b)
iniziare
ripetere (24)
iniziare
range = 55 $ 16 casuale%;
fine
$ monitor ( "‰ d", gamma);
fine

endmoduleuscita segue quid 66
#? D 47
#? D 58
#? D 54
#? D 67
#? D 67
#? D 48
#? D 46
#? D 57
#? D 59
#? D 64
#? D 49
#? D 63
#? D 50
#? D 69
#? D 69
#? D 42
#? D 41
#? D 62
#? D 55
#? D 55
#? D 44
#? D 51
#? D 47
#? D 41
#? D 44
#? D 42

Potreste darmi soluzione corretta?

Grazie,
Venkat kAggiunto dopo 1 ora 6 minuti:Hi Frnd,

Ho la soluzione per questo

dobbiamo utilizzare il comando casuale di questo tipo.
dobbiamo usare le parentesi (), come qui di seguito.
% 16;

range = 55 ) ($ casuale%
16;

Questo dà valori compresi tra 55 a 77Grazie,
Venkat kAggiunto dopo 5 minuti:Quanto sopra si dà valore compreso tra 55 a 71
non da 55 a 77 ...

 

Welcome to EDABoard.com

Sponsor

Back
Top