Newsgroup: it.comp.lang.c++
Titolo: GENERAZIONE DI NUMERI CASUALI

mi servirebbe generare dei numeri casuali. c'è una funzione di
libreria standar? o c'è un'algotitmo sicuro per generare numeri
casualmente ?
grazie
<--------------------------------------------------->
messaggio by: credici
mailtome    : 
cre...@infinito.it
my home     : 
http://credici.supereva.it
 
visitate subito : 
http://www.city3000.it/athenet
e non ve ne pentirete mai 
<--------------------------------------------------->

 wrote in message
39c4ec35...@news.tiscalinet.it...


Si, si usa rand() %(numero_max_che_vuoi_generare+1) ed srand per
inizializzare il seed
Bye,
Sebastiano


inizializzare il seed
Questo approccio per generare numeri casuali tra 0 e n_max non sembra molto
affidabile a detta non solo mia, ma anche di B. Stroustrup: i bit meno
significativi di un numero casuale generato con rand sono spesso poco
affidabili, quindi S. stesso suggerisce quest'altro metodo:
int rnd = ( double(rand()) / RAND_MAX ) * n
Ciao!
Domenico

>int rnd = ( double(rand()) / RAND_MAX ) * n
ho provato ad implementarlo cosě:
#include "iostream.h"
#include "stdlib.h"
// prova per la generazione di numeri casuali 
main ()
{ 
	double n = 1;
	int rnd = ( double(rand()) / RAND_MAX ) * n;
	cout <<rnd <<endl;
	return 0;
}
ma l'output č sempre 0 !!
dove ho sbagliato?


dove ho sbagliato?
Ehm, mi ero dimenticato alcune cosette:
1) la variabile rnd converte implicitamente il risultato in int, quindi puň darti solo numeri interi
2) l'espressione produce in generale un numero casuale tra 0 e n-1
Scusa per queste due omissioni
Ciao
Domenico


Ricordati che stai generando numeri casuali compresi
fra [0, n - 1] (nel tuo caso fra [0, 0]).
Manlio Perillo

2) l'espressione produce in generale un numero casuale tra 0 e n-1
e come faccio a farsichè sia un numero tra 0 e (per esempio) 10 ? ho
provato dichiarare n = 10 ma se il risultato di 
int rnd = ( double(rand()) / RAND_MAX )    è 0 è ovvio che * n
risulterà comunque 0. 


casualmente ?
Leggi le faq, sono state postate da pochi giorni.
Paolo
-------------------------------------------
  Paolo Marotta
 
http://web.tiscalinet.it/paolo_marotta/
-------------------------------------------

Leggi le faq, sono state postate da pochi giorni.
a che indirizzo sono ?






Io avevo il tuo stesso problema 2 settimane fa. 
Dovevo generare grandi numeri casuali ( lo scopo era implementare l' algoritmo 
RSA).


Quello che posso dirti e' che anch' io ho 
utilizzato la funzione rand(), inizializzando il seme con l' ora del pc. Questo 
procedimento ( usare rand) non ha pero' niente a che vedere con la generazione 
di numeri casuali !!! i numeri generati da rand() sono infatto pseudocasuali, 
quelli casuali sono tutt' altra cosa!


Potresti fare qualcosa di simile a quello che fa 
PGP quando calcola le chiavi : ti chiede di tenere premuto un tasto della 
tastiera per qualche secondo e, a quel tempo associa la chiave 
generata.


bye Gianni



bye Gianni
il mio problema č che devo fare piů numeri casuali all'interno del
programma e l'utente non dovrebbe sapere della generazione di numeri
casuali... cmq mi hai fatto venire buone idee.. 


a che indirizzo sono ?
Le trovi su questo NG, su it.faq e su 
www.programmazione.it


risulterà comunque 0.
Prova a dare n=11 e vedrai : double(rand()) / RAND_MAX non può essere
assolutamente 0, al massimo 1.
Ciao
Domenico