Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Genererare un numero casuale...

Salve,
come da subject, ho la necessità di tirare fuori da qualche parte un
numero casuale, un numero random...non posso prendere qualcosa dal
processore...o che ne so che strano pezzo del pc?
Ho provato a scrivere un espressione con un po di Rnd dentro
ma...molto spesso escono numeri simili...un cosiglio?
Saluti...

 ha scritto nel messaggio
news:3a782c69...@news.enter.it...


Cioč?

Ciao, puoi usare, all'inizio della sub dove vuoi generare i numeri casuali,
l'struzione Randomize che inizializza le operazioni di random
L'istruzione completa č Randomize ( [numero] ) dove "numero" č il "seme"
dell'operazione, o piů semplicemente un numero di base da cui parte per
creare quelli casuali.
Se omesso, la funzione prende il timer di sistema come numero di base,
altrimenti puoi passargli un valore diverso ogni volta per essere sicuro che
inizi sempre da una base diversa.
Spero di non dire una cazzata, ma quando si avvia un'applicazione, gli viene
assegnato ogni volta un'Handle diverso, quindi se vuoi che ogni volta che
lanci l'applicazione ti venga ridefinito la base di random puoi usare
l'istruzione Randomize ( me.hWnd )
oppure, un trucco che usavo sempre in C, ma non so se riesce anche in VB,
creavo una variabile e prima di inizializzarla la passavo come valore, cosě
la Randomize riceveva il numero (opportunamente "castato") che in quel
momento occupava l'area di memoria "prenotata" dalla nuova variabile, ma se
ben ricordo VB inizializza automaticamente le var. che si creano, quindi non
so se funziona questo metodo.
Cmq, anche la semplice istruzione Randomize senza parametri, messa appunto
all'inizio della sub o anche ripetuta all'interno del codice in piů punti,
penso che vada bene.
Bye
--
Tango
www.af.mil
ICQ: 35463931

Che dimensioni deve avere queato numero?
Io ho creato un generatore di numeri casuali per statistica ad un amico e
l'ho fatto con questa espressione
r = Int((Rnd() * n) + 1)
dove n è un numero scelto dall'utilizzatore.
La somma di 1 finale serve per ottenere numeri da 1 a n, senza andrebbero da
0 a n-1 (per via dell'arrotondamento).
Spero possa esserti utile.
Ciao
Luca

0 a n-1 (per via dell'arrotondamento).
Grazie,
ho provato ma...come avevo scritto nella mia espressioncina, il numero
n, dandoglielo io, 'eredita' una sorta di sequenzialità, almeno nel
mio caso succede. Ho sostituito il tuo n con un numero che ricavo da
una sequenza all' interno del mio programma, mi serve ad altro, ma è
l' unico numero che posso prendere in modo 'casuale'. Questo numero
cresce, si incrementa di 1.
Anche dalla tua espressione escono quasi sempre gli stessi numeri, Il
problema è ricavare proprio quell' n lì. Non c' è un modo per prendere
dal pc, una qualcosa che elabora lui...un riferimento dalla memoria,
un campo numerico sporco...niente?
Saluti...

 ha scritto nel messaggio
news:3a791893...@news.enter.it...


Ho sentito che esiste un teorema, si chiama 'teorema di Montecarlo',
Montecarlo è quello che se l' è inventato, e fa proprio questa cosa,
qualcuno ne sa qualcosa?
Saluti...

 ha scritto nel messaggio
news:3a7926c5...@news.enter.it...


cresce, si incrementa di 1.
In Unix si usa sempre la funzione date --o time, non ricordo perche'
non lo faccio mai-- per avere una funzione davvero random, perche' e'
quasi impossibile che chiami 2 volte nello stesso istante il tuo
programma :)
Saluti.
-- 
      Gianni "bugbarbeq" Rondinini, 25, RA, 242, 152
  VBR - Vero Birro RomagnoloŽ, diffidate dalle imitazioni!
 Opel/ECC Calibrezio EVO-IV --- Kawasaki "Gas Gas" ZZ-R 1100
 ICQ# 36893168 - IRCNet: bugbarbeq, @ on #linux-it & #NetBSD

un campo numerico sporco...niente?
Devi utilizzare congiuntamente la Randomize descritta da Tango Rnd
della formula di Luca...
Insomma la Randomize(number) genera una serie di numeri pseudocasuali
utilizzando come "seme" il parametro number
Il valore di default di number e' il valore corrente del timer di
sistema (che e' gia' abbastanza casuale).
Immagina che Randomize crei un array di numeri generati da formule
casuali che possono cambiare a seconda del number.
Pero' Randomize non restituisce nulla. Per ottenere questa lista devi
usare Rnd che ritorna un valore single maggiore o uguale a 0 e minore
di 1.
L'help e' molto chiaro e ha qualche esempio molto chiarificante...
-- 
Giovanni "Gyo" Perdicaro
E-Mail: 
gperd...@sicilyonline.it