|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Mar 2006
Messaggi: 131
|
[C]random per generazione di numeri anche negativi
devo fare una funzione che genera double random tra 1 e -1
srand(time(NULL)); double nuovo = (double) rand()/(double)RAND_MAX; può funzionare?? ...per prendere anche i negativi e mantenermi più casuale possibile come potrei fare?? avevo pensato a moltiplicare il random per RAND_MAX e dividere per 2,se è divisibile lo moltiplico per -1 altrimenti lo lascio così com'è... non è che ci sono metodi più efficaci per un calcolo del genere?? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
((double)rand()/(double)(RAND_MAX))*2 - 1
Così ottieni un double fra -1 e 1 compresi ![]() |
![]() |
![]() |
![]() |
#3 |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
http://www.hwupgrade.it/forum/showthread.php?t=1196677
Lo so che dovrei aggiornarla, ma qualcosina ancora la dice...
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
![]() |
![]() |
![]() |
#4 |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
(double)rand()/(double)(RAND_MAX+1) ecc.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Mar 2006
Messaggi: 131
|
grazie mille! ma non capisco come fa..nel senso:
-Il random estrae un double grande massimo quanto RAND_MAX -il RAND_MAX viene moltiplicato per 2,quindi darà un double grande qualcosa tipo 64mila e qualcosa -il -1 cos'è??non è moltiplicato vero??.. sembra che sopra io abbia massimo rand max e sotto rand max per il doppio sottratto di uno... grazie ancora! |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Il tuo discorso è giusto per ottenere la distribuzione di probabilità esatta, ma non permette di ottenere il +1 come rosultato finale
![]() santaclause83: ti tolgo il (double) per farti capire meglio (rand()/RAND_MAX) * 2 - 1 rand()/RAND_MAX permette di ottenere un numero fra 0 e 1 compresi. Lo moltiplichi per 2 ed hai quindi un numero fra 0 e 2, ci togli 1 ed ottieni un numero fra -1 e +1 compresi. |
![]() |
![]() |
![]() |
#8 | |||
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
Quote:
Quote:
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|||
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:09.