|
|
|
![]() |
|
Strumenti |
![]() |
#21 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Comunque il problema non è quello! Sono andato adesso a vedere il sorgente della rand() nel VC++. Eccolo: Codice:
int __cdecl rand ( void ) { #ifdef _MT _ptiddata ptd = _getptd(); return( ((ptd->_holdrand = ptd->_holdrand * 214013L + 2531011L) >> 16) & 0x7fff ); #else /* _MT */ return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff); #endif /* _MT */ } E nell'include stdlib.h fornito con il VC++ c'è: #define RAND_MAX 0x7fff Se anche tu ridefinissi RAND_MAX, la funzione rand() continua a funzionare secondo il modo con cui è stata progettata e compilata!!!!!!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#22 | ||
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
Quote:
![]()
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
||
![]() |
![]() |
![]() |
#23 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Se vi serve un generatore di numeri casuali che rispetti un minimo di requisiti di casualità andatevi a leggere i Numerical Recipes, senza perdere troppo tempo su rand().
|
![]() |
![]() |
![]() |
#24 |
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
ho un problema... il compilatore dice che null non è definito... questa è la funzione
Codice:
int randgen() { srand(time(null)); return rand()%4+1; } ![]() Ultima modifica di AngeL) : 30-06-2006 alle 18:00. |
![]() |
![]() |
![]() |
#25 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 1059
|
Semplice ti da errore perche lo devi scrivere tutto maiuscolo!!
![]() NULL ciao ciao ![]() ![]() |
![]() |
![]() |
![]() |
#26 |
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
ehm..
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
#27 |
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
ho scritto una funzione che scrive 100 volte il risultato di randgen e mi esce lo stesso numero... dove ho sbagliato?
|
![]() |
![]() |
![]() |
#28 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 1059
|
Quote:
int randgen() { return rand()%4+1; } main(){ srand(time(NULL)); for(int i=0; i<101; i++) cout <<randgen()<<endl; system("pause"); } ciao ciao |
|
![]() |
![]() |
![]() |
#29 | ||
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
Quote:
![]() Codice:
return (rand()/(RAND_MAX+1.0))*4+1; ![]()
__________________
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 |
||
![]() |
![]() |
![]() |
#30 | |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
Il problema si risolve inizializzandolo con un valore diverso a ogni esecuzione: il modo classico srand(time(NULL)), in base all'ora di sistema, ma ho visto fare anche srand(getpid()), in base al PID del processo in corso.
__________________
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 |
|
![]() |
![]() |
![]() |
#31 | ||
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
Quote:
Quote:
![]() edit: ho fatto cosi Codice:
#include <iostream> #include <time.h> using namespace std; int randgen(); int main() { int i; for(i=0;i<10;i++) { cout << randgen() << endl; } } int randgen() { srand(time(NULL)); return (rand()/(RAND_MAX+1.0))*4+1; } Ultima modifica di AngeL) : 01-07-2006 alle 10:53. |
||
![]() |
![]() |
![]() |
#32 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#33 |
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
grazie
![]() |
![]() |
![]() |
![]() |
#34 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 1059
|
Quote:
si infatti |
|
![]() |
![]() |
![]() |
#35 | |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
In questo modo, la qualità del generatore che ottieni, è confrontabile con quella di rand; nell'altro modo, rischi di ottenere un generatore anche molto peggiore.
__________________
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: 20:53.