Generazione numeri casuali tra una serie di valori.

Sezione dedicata al sistema di sviluppo BASCOM-AVR per i micro AVR
At90s, Attiny, Atmega e Xmega

Generazione numeri casuali tra una serie di valori.

Postby filosofo » 10 Nov 2012, 09:54

Ciao a tutti,
ho un piccolo problema.
in bascom esiste la funzione :

var = RND( limit )

se limit=50 ,var potrà assumere valori casuali compresi tra 0 e 49, giusto?

ora a me necessità di generare numeri casuali tra una serie di numeri precalcolati come sotto:

10, 40, 12, 67, 100, 234, 5, 2, 13, ecc ecc

la funzione dovrebbe restituire un numero casuale solo tra questa serie di numeri.
come posso fare?

vi ringrazio
filosofo
 
Posts: 74
Joined: 23 Oct 2011, 09:52
Location: Dintorni di Roma

Re: Generazione numeri casuali tra una serie di valori.

Postby flz47655 » 10 Nov 2012, 10:05

Puoi mettere in un array gli N numeri precalcolati e generare un numero casuale N che sceglie l'elemento dell'array
Ciao
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Generazione numeri casuali tra una serie di valori.

Postby filosofo » 10 Nov 2012, 10:11

grazie flz della pronta risposta
i numeri sono molti (circa 1000 e il valore può variare tra zero e 65535) e non vorrei sprecare ram preziosa che mi serve per altro.
esiste un altro modo?

grazie
filosofo
 
Posts: 74
Joined: 23 Oct 2011, 09:52
Location: Dintorni di Roma

Re: Generazione numeri casuali tra una serie di valori.

Postby flz47655 » 10 Nov 2012, 11:28

Se hai un qualche algoritmo per calcolare i mille numeri puoi utilizzarlo,altrimenti la vedo dura..comunque potresti tenerli nella flash e caricare in ram solo il numero che ti serve al momento

Ciao
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Generazione numeri casuali tra una serie di valori.

Postby legacy » 10 Nov 2012, 11:48

che problema ti porta a cio' ? per curiosita'
legacy
 
Posts: 862
Joined: 12 Mar 2012, 11:30

Re: Generazione numeri casuali tra una serie di valori.

Postby deluca » 10 Nov 2012, 11:51

@filosofo ecco la soluzione: (spero di aver capito)

Code: Select all
$sim

Dim R As Word
Dim A As Word
Dim ___rseed As Word
___rseed = 10230                                            'questo valore deve variare as ogni poweron
                                                            'per migliorare sensibilmente l'rnd sequence
'-------------------------------------------------------------------------------
Main:
Do
   R = Rnd(21)                                              'numero di valori in tabella (fino a 65536)
   A = Lookup(r , Random)
   Print A
Loop
End
'-------------------------------------------------------------------------------
Random:
Data 10% , 40% , 12% , 67% , 100% , 234% , 5% , 2% , 13% , 23% , 45% , 1000%
Data 1024% , 156% , 2356% , 10022% , 232% , 12345% , 23456% , 34567% , 56789%
'........ancora altri fino al riempimento della flash


ciao
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Generazione numeri casuali tra una serie di valori.

Postby filosofo » 10 Nov 2012, 20:06

grazie deluca, non conoscevo l'istruzione Lookup e adesso ho capito anche a cosa potrebbe servire.

perchè hai messo il % dopo il valore?

grazie sempre per il supporto
filosofo
 
Posts: 74
Joined: 23 Oct 2011, 09:52
Location: Dintorni di Roma


Return to BASCOM-AVR

Who is online

Users browsing this forum: No registered users and 5 guests

cron