Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Oscar ha scritto: >> - Microsoft Visual Studio usa RAND_MAX=32767, quindi se OOo e' stato >> compilato con quello avrete a disposizione solo 32768 numeri casuali. >> http://msdn.microsoft.com/en-us/library/2dfe3bzd(VS.80).aspx >> - GNU GCC (C++) usa RAND_MAX=2147483647, quindi se OOo e' stato >> compilato con quello avrete a disposizione oltre 2 miliardi di numeri >> casuali e le collisioni saranno eventi assolutamente eccezionali. >> http://www.gnu.org/software/libc/manual/html_node/ISO-Random.html > > quindi anche in questo caso è colpa di Microsoft ;-) > > grazie della spiegazione, ora tutto è più chiaro! > > - > To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org > For additional commands, e-mail: utenti-h...@it.openoffice.org > > > Mi è scappato l'invia prima di finire quel che volevo dire lo standard C99 stabilisce che RAND_MAX debba essere maggiore o uguale a 32767 quindi è lecito aspettarsi nel peggiore dei casi che valga 32767. Ergo, chi deve scrivere codice portabile copia rand(), gli cambia nome e non la fa dipendere da RAND_MAX ma da un altra define di suo gradimento. - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Oscar ha scritto: >> - Microsoft Visual Studio usa RAND_MAX=32767, quindi se OOo e' stato >> compilato con quello avrete a disposizione solo 32768 numeri casuali. >> http://msdn.microsoft.com/en-us/library/2dfe3bzd(VS.80).aspx >> - GNU GCC (C++) usa RAND_MAX=2147483647, quindi se OOo e' stato >> compilato con quello avrete a disposizione oltre 2 miliardi di numeri >> casuali e le collisioni saranno eventi assolutamente eccezionali. >> http://www.gnu.org/software/libc/manual/html_node/ISO-Random.html > > quindi anche in questo caso è colpa di Microsoft ;-) > > grazie della spiegazione, ora tutto è più chiaro! > > - > To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org > For additional commands, e-mail: utenti-h...@it.openoffice.org > > > Bisognerebbe segnalarlo agli svilupatori, includere una copia locale di rand() eventualmente rinominata che usi un valore esplicito risolverebbe tutti i problemi di compatibilità. Purtroppo il problema di RAND_MAX è piuttosto comune ed interessa anche altri compilatori ad es. anche il Borland/Code Gear ha RAND_MAX 32767. Pare che il problema sia stato sottovalutato... - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
- Microsoft Visual Studio usa RAND_MAX=32767, quindi se OOo e' stato compilato con quello avrete a disposizione solo 32768 numeri casuali. http://msdn.microsoft.com/en-us/library/2dfe3bzd(VS.80).aspx - GNU GCC (C++) usa RAND_MAX=2147483647, quindi se OOo e' stato compilato con quello avrete a disposizione oltre 2 miliardi di numeri casuali e le collisioni saranno eventi assolutamente eccezionali. http://www.gnu.org/software/libc/manual/html_node/ISO-Random.html quindi anche in questo caso è colpa di Microsoft ;-) grazie della spiegazione, ora tutto è più chiaro! - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Oscar ha scritto: > A1:A100 =casuale() > B1:B100 =RANGO(A1;$A$1:$A$100) > C1:C100 =SEGNO(CONTA.SE(B$1:B$100;B1)-1) ... > continuo a trovare doppioni; e aggiungo con molta facilità. La spiegazione di tutto e' che in ambiente Microsoft Windows (sotto spiego meglio, in realta' e' il compilatore che fa la differenza) il generatore di numeri casuali di Calc e' fortemente limitato. Esistono solo (sono pochi!) 32768 numeri "casuali", per la precisione: 0/32768, 1/32768..., 32767/32768. Per verificare, basta scrivere: A1: [=CASUALE()] B1: [=A1*32768] C1: [=B1-ARROTONDA.DIFETTO(B1;1)] Se la cella C1 rimane sempre a zero anche aggiornando piu' volte con CTRL-SHIFT-F9, la vostra versione di Calc e' stata compilata con questo supporto limitato per i numeri casuali. Questo spiega tutto: - Con solo 32768 numeri a disposizione, e' relativamente facile trovare dei doppioni in un elenco di 100 chiamate consecutive (indipendenti o no); se 100 vi sembra molto piccolo rispetto a 32768, cercate informazioni sul "paradosso dei compleanni". - Moltiplicare CASUALE()*CASUALE() distrugge varie proprieta' statistiche, ma aumenta l'insieme dei risultati ottenibili, che diventano parecchi milioni. Quindi cala di molto la probabilita' di trovare collisioni, o "doppioni". E' un bug di OOo? No, il codice di OOo rimanda la scelta al compilatore: sc/source/core/tool/interpr1.cxx void ScInterpreter::ScRandom() { PushDouble((double)rand() / ((double)RAND_MAX+1.0)); } Di qui si nota che il denominatore e' RAND_MAX+1. RAND_MAX dipende dal compilatore che usate: - Microsoft Visual Studio usa RAND_MAX=32767, quindi se OOo e' stato compilato con quello avrete a disposizione solo 32768 numeri casuali. http://msdn.microsoft.com/en-us/library/2dfe3bzd(VS.80).aspx - GNU GCC (C++) usa RAND_MAX=2147483647, quindi se OOo e' stato compilato con quello avrete a disposizione oltre 2 miliardi di numeri casuali e le collisioni saranno eventi assolutamente eccezionali. http://www.gnu.org/software/libc/manual/html_node/ISO-Random.html La differenza tra compilatori spiega anche l'ultimo mistero rimasto, cioe' perche' il problema si manifesta solo per utenti Microsoft Windows. Ciao, Andrea. - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
At 11:55 19.03.2009, Guido (email.it) wrote: >mi inserisco in questo thread, che sta diventando un tormentone, >introducendo due ulteriori spunti di riflessione: >- il fatto che siano casuali NON ESCLUDE la possibilità di ottenere più volte >lo stesso risultato in quanto non si tratta di estrazioni esaustive (tipo >estrazione del lotto) >- la verifica della casualità di una serie di numeri deve essere fatta con >metodi statistici e non con metodi "visivi" >- ai vari metodi di generazione di numeri casuali è possibile associare un >punteggio di verisimiglianza (probabilità) >- in alla necessità si sceglie un metodo casuale o un altro (già detto) Verissimo. Era pero' una richiesta esplicita del primo richiedente, in quanto lui richiedeva una estrazione multipla senza ripetizione dei numeri già estratti. Come a dire che se dal cesto estrai il 45, poi questo numero non deve piu' uscire. FF - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Guido (email.it) ha scritto: > "molti hanno" scritto: >> Paolo Pedaletti ha scritto: >> confermo i numeri doppi > mi inserisco in questo thread, che sta diventando un tormentone, > introducendo due ulteriori spunti di riflessione: > - il fatto che siano casuali NON ESCLUDE la possibilità di ottenere > più volte lo stesso risultato in quanto non si tratta di estrazioni > esaustive (tipo estrazione del lotto) scusa ma la bontà di un generatore di numeri casuali è espressa come l'inverso del periodo minimo garantito per la generazione dello stesso numero. Infatti i metodi software (che non utilizzino registri hardware o misure riconducibili ad eventi naturali) sono in grado di generare numeri e/o sequenze pseudo-casuali. In linea di massima la doc. di MS Excel e di OOo calc riferisce di un periodo pari a circa 1 milione di estrazioni. > - la verifica della casualità di una serie di numeri deve essere fatta > con metodi statistici e non con metodi "visivi" certo, il problema è che la soluzione adottata non doveva ricorrere a macro o codice e pertanto è comunque una soluzione semplificata ma sufficiente per risolvere il problema in questione. Ora il punto è: considerato che ogni casuale() in ogni cella è indipendente da tutte le altre e che c'è una probabilità di 1 su circa 1 milione che la stessa casuale() generi 2 volte lo stesso numero è possibile che 90 casuale() indipendenti alla prima estrazione possano generare 1 o più numeri uguali? E come mai indipendentemente dal numero di decimali 90 casuale() * casuale() che matematicamente esprime una funzione di probabilità più sfavorevole rispetto a casuale() (1 sola) apparentemente funzionano meglio? Mi risulta che il campionamento di un'estrazione sia un metodo sia probabilistico sia statistico e quindi corretto. Io mi son preso la briga di rilevare la distribuzione, varianza e covarianza dell'insieme dei risultati sia per casuale() sia per casuale*casuale() e loro 90 esecuzioni successive e ovviamente i dati rispecchiano una certa bontà dell'algoritmo ed in questo caso doppioni non ce ne sono mai stati neppure con 8 decimali ed i risultati confermano che casuale() da sola lavora meglio (risultato più che ovvio). Il problema resta la presunta indipendenza di n funzioni casuale() che parrebbe non altrettanto buona e che producono risultati di qualità inferiore paragonati alla singola casuale() che genera n estrazioni. > - ai vari metodi di generazione di numeri casuali è possibile > associare un punteggio di verisimiglianza (probabilità) > - in alla necessità si sceglie un metodo casuale o un altro (già > detto) > Guido > > > - > To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org > For additional commands, e-mail: utenti-h...@it.openoffice.org > > > - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Francesco Forti ha scritto: > ho fatto anche io la prova ma seguendo il dibattito passato qui > ho anche impostato un certo numero di decimali. > Si suggeriva il massimo consentito. > Io ne ho messi 15 e sono passato da un discreto numenro di doppioni > a zero > ops... quando ho scrtto confermo i numeri doppi mi riferivo ad un mio precedente post dove rilevavo doppi fino a 8, molto occasionali tra 8 e 12 decimali e nessuno oltre i 12 ma rilevavo che le ultime cifre erano periodiche con un periodo molto breve es ultima cifra sempre 0 o 5. > Ciao, > Francesco F. > > At 08:46 19.03.2009, Oscar wrote: > >> ciao, >> >> ho provato di nuovo con: >> >> A1:A100 >> =casuale() >> >> B1:B100 >> =RANGO(A1;$A$1:$A$100) >> >> C1:C100 >> =SEGNO(CONTA.SE(B$1:B$100;B1)-1) >> >> con le somme nelle rispettive B101 e C101 >> >> inoltre ho verificato di non aver attivo "precisione come mostrato", ma >> continuo a trovare doppioni; e aggiungo con molta facilità. >> >> Il mio sistema è un Windows XP sp3, openoffice 3.0.1 build 9379, sto usando >> una versione portatile. >> >> Ho provato pure su un altro computer con la versione 2.3.1 installata sempre >> windows XP sp3 e ottengo lo stesso risultato! >> >> Posso provare a casa che ho una OpenSuse e una Mandriva. >> > > > > - > To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org > For additional commands, e-mail: utenti-h...@it.openoffice.org > > > > - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
"molti hanno" scritto: Paolo Pedaletti ha scritto: confermo i numeri doppi mi inserisco in questo thread, che sta diventando un tormentone, introducendo due ulteriori spunti di riflessione: - il fatto che siano casuali NON ESCLUDE la possibilità di ottenere più volte lo stesso risultato in quanto non si tratta di estrazioni esaustive (tipo estrazione del lotto) - la verifica della casualità di una serie di numeri deve essere fatta con metodi statistici e non con metodi "visivi" - ai vari metodi di generazione di numeri casuali è possibile associare un punteggio di verisimiglianza (probabilità) - in alla necessità si sceglie un metodo casuale o un altro (già detto) Guido - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
ho fatto anche io la prova ma seguendo il dibattito passato qui ho anche impostato un certo numero di decimali. Si suggeriva il massimo consentito. Io ne ho messi 15 e sono passato da un discreto numenro di doppioni a zero Ciao, Francesco F. At 08:46 19.03.2009, Oscar wrote: >ciao, > >ho provato di nuovo con: > >A1:A100 >=casuale() > >B1:B100 >=RANGO(A1;$A$1:$A$100) > >C1:C100 >=SEGNO(CONTA.SE(B$1:B$100;B1)-1) > >con le somme nelle rispettive B101 e C101 > >inoltre ho verificato di non aver attivo "precisione come mostrato", ma >continuo a trovare doppioni; e aggiungo con molta facilità. > >Il mio sistema è un Windows XP sp3, openoffice 3.0.1 build 9379, sto usando >una versione portatile. > >Ho provato pure su un altro computer con la versione 2.3.1 installata sempre >windows XP sp3 e ottengo lo stesso risultato! > >Posso provare a casa che ho una OpenSuse e una Mandriva. - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Paolo Pedaletti ha scritto: > Ciao Oscar > >> inoltre ho verificato di non aver attivo "precisione come mostrato", ma >> continuo a trovare doppioni; e aggiungo con molta facilità. > > io no, somme sempre 0 in ultima colonna > > Ubuntu 8.10 OpenOffice 3.0.1 (scaricato da openoffice.org) > e OpenOffice 2.4.1 > > di piu' non so... > > ciao > confermo i numeri doppi ma vorrei far presente che o si sa in che modo vengono generati a partire da una radice o il discorso lascia il tempo che trova. Mi spiego: la funzione di libreria c rand() accetta un numero radice da cui partire per generare i numeri, visto che OOo non permette di selezionare la radice è presumibile che la acquisisca automaticamente e potrebbe farlo automaticamente a partire da un timer hardware o qualche altro registro. Se non si sa questo e se non si sa se il comportamento è identico in MS e Linux non si può stabilire l'indipendenza di più funzioni casuale() e di tutto il resto di conseguenza. Comunque a priori 100 funzioni casuale() non equivalgono a 100 numeri generati da 100 chiamate consecutive di casuale(). Resta inteso che casuale() * casuale() su un intervallo tra 0 e 1 evidentemente riduce lo spazio dei risultati in misura variabile ma comunque li comprime perché il prodotto di 2 numeri < 1 è comunque minore del minore dei 2. - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Ciao Oscar inoltre ho verificato di non aver attivo "precisione come mostrato", ma continuo a trovare doppioni; e aggiungo con molta facilità. io no, somme sempre 0 in ultima colonna Ubuntu 8.10 OpenOffice 3.0.1 (scaricato da openoffice.org) e OpenOffice 2.4.1 di piu' non so... ciao -- Paolo Pedaletti www.openlabs.it - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
ciao, ho provato di nuovo con: A1:A100 =casuale() B1:B100 =RANGO(A1;$A$1:$A$100) C1:C100 =SEGNO(CONTA.SE(B$1:B$100;B1)-1) con le somme nelle rispettive B101 e C101 inoltre ho verificato di non aver attivo "precisione come mostrato", ma continuo a trovare doppioni; e aggiungo con molta facilità. Il mio sistema è un Windows XP sp3, openoffice 3.0.1 build 9379, sto usando una versione portatile. Ho provato pure su un altro computer con la versione 2.3.1 installata sempre windows XP sp3 e ottengo lo stesso risultato! Posso provare a casa che ho una OpenSuse e una Mandriva. - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Il 16/03/2009 Oscar ha scritto: > ho inserito la formula =casuale() nelle celle A1:A90 > ho impostato il massimo dei numeri decimali consentiti e ho ottenuto > numeri tipo questo 0,8022155761718750 > nelle celle B1:B90 ho inserito la formula =RANGO(A1;$A$1:$A$90) > nella cella B91 ho messo la formula =SOMMA(B1:B90) > poi ho premuto di seguito CTRL+SHIFT+F9 > sapendo che il totale della colonna B1:B90 doveva essere 4095, ho > controllato il risultato Grazie, cosi' e' molto chiaro. Pero' merita ancora una piccola indagine perche' il comportamento che descrivi (avere numerosi doppioni) e' ancora sintomo che CASUALE() avrebbe qualcosa che non va. Prima di tutto, in aggiunta alle tue formule io metterei in C1 [=SEGNO(CONTA.SE(B$1:B$90;B1)-1)] che restituisce 1 se il numero compare piu' di una volta, 0 in caso contrario. Mettendo in C91 [=SOMMA(C1:C90)] puoi vedere immediatamente quanti doppioni hai, senza passare per B1 che, come detto, usa un criterio molto debole. Io ho fatto, come te, diverse centinaia di prove con CTRL+SHIFT+F9 ma non ho mai ottenuto un doppione (C91 valeva sempre zero). Questo e' il comportamento che mi aspetterei da un buon generatore di numeri "casuali". Perche' tu ottenevi tanti doppioni? Forse avevi attivato "precisione come mostrato" in Strumenti - Opzioni - OpenOffice.org Calc - Calcola? Se attivo "precisione come mostrato" e uso due decimali anch'io trovo doppioni, ma se uso, come facevi tu, il massimo dei decimali consentiti non ho alcun doppione anche su molti tentativi. Inoltre, usando solo due decimali, con [=CASUALE()] in A1:A90 ottengo qualche doppione, ma molti meno (non di piu'!) di quelli che ottengo con [=CASUALE()*CASUALE()]. E' una conferma empirica di quanto gia' scrivevo, cioe' che CASUALE()*CASUALE() dovrebbe peggiorare le cose e non migliorarle. Se riesci a fare un controllo veloce alla luce di quanto scrivo e a dare qualche dettaglio sul tuo sistema magari possiamo investigare meglio: io posso solo dire che lo considererei un problema, ma che non riesco assolutamente a riprodurlo con l'analisi che ho fatto, che dimostra anzi che CASUALE() si comporta come prescritto dalla teoria. Ciao, Andrea. - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
ciao a tutti, ho letto solo ora i messaggi. Riepilogo: io avevo bisogno di generare in modo casuale una sequenza di numeri dall'1 all'x (era più un test che non un utilizzo vero e proprio). Dopo i vari consigli questo è quanto ho provato: ho inserito la formula =casuale() nelle celle A1:A90 ho impostato il massimo dei numeri decimali consentiti e ho ottenuto numeri tipo questo 0,8022155761718750 nelle celle B1:B90 ho inserito la formula =RANGO(A1;$A$1:$A$90) nella cella B91 ho messo la formula =SOMMA(B1:B90) poi ho premuto di seguito CTRL+SHIFT+F9 sapendo che il totale della colonna B1:B90 doveva essere 4095, ho controllato il risultato e ho notato che molto spesso escono numeri doppi; così ho capito il mio "giochetto" per avere una sequenza casuale di numeri non funzionava ho risolto il problema con la formula =casuale()*casuale() su A1:A90 ripetendo lo stesso test per un paio di minuti non ho mai trovato un numero doppio (ho provato anche con 1000 numeri per curiosità e idem non si sono verificati numeri doppi). questo è tutto - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Andrea Pescetti ha scritto: > Oscar ha scritto: >> ho fatto delle prove, ho messo in piedi la tua idea con 90 numeri e >> una sola =Casuale() > > Mi interessa tornare sull'argomento per controllare che non ci sia un > colossale problema con la funzione CASUALE(), anche se credo di > avere capito male io. Tu dici che hai scritto [=CASUALE()] in 90 > celle, ad esempio A1:A90? > >> in una cella ho fatto in modo che mi calcoli la somma dei numeri >> che uscivano e sapendo che il risultato doveva essere 4095 >> S(1,2,x)=x/2*(x+1) > > E cosa c'entra una formula con numeri interi con il calcolo qui > sopra, che produce numeri in virgola mobile? Allora usavi qualcosa > tipo [=ARROTONDA.ECCESSO(CASUALE()*90;1)] in maniera da ottenere > numeri interi tra 1 e 90? Oppure lo usavi semplicemente come stima > per vedere che i tuoi numeri fossero "ben distribuiti"? Anche io non sono molto d'accordo con questo metodo che è il limite di una serie e quindi è approssimato con numeri reali. Io per verificare il tutto ho usato la nota proprietà della somma di un intervallo di interi consecutivi su una seconda colonna ottenuta con =RANGO(A1:A90;A1:A90) che sta in B1:B90. Effettivamente talvolta ci sono numeri doppi ma la stranezza è che non ce ne sono di ESATTAMENTE uguali in A1:A90 ma al massimo di molto simili (differenze oltre l'ottavo decimale). Per sciogliere il dubbio ho disabilitato il calcolo automatico e provveduto a riordinare le colonne quando la somma è diversa da quella attesa (5151) ed al più ho ritrovato numeri vicini ma non uguali. > >> ho tenuto premuto i pulsanti CTRL+SHIFT+F9 Ho constato che così >> uscivano spesso numeri doppi > > Ecco, questo e' il punto che mi interessa chiarire. Come controllavi > se c'erano doppioni? Facendo la somma? Guardare il totale e' un > criterio che, anche se tu lo usassi solo per numeri interi (quindi > con la formula modificata come scritto sopra) e' troppo debole: se ti > esce per 45 volte "1" e per 45 volte "90", la somma torna lo stesso, > ma i doppioni ci sono! Pienamente d'accordo però ho fatto qualche verifica pure io sia sulla colonna ottenuta con RANGO sia sulla colonna ottenuta con CASUALE() ed effettivamente con CASUALE() non ci sono doppioni se utilizzi un numero elevato di decimali (es 15) ma se ne usi mano di 8 ce ne sono causaarrotondamenti. Comunque c'è qualcosa che non va perché con un numero alto di decimali c'è periodicità 2 dell'ultima cifra (sempre 0 o 5) e delle ultime 3 tendenzialmente sempre dispari o 0. > >> mentre moltiplicando =Casuale()*Casuale() non ho avuto nessun >> doppione per un paio di minuti di fila > > Questo testimonia che non ho capito bene cosa facevi. Se il > generatore di numeri "casuali" di Calc e' valido (e dalle prove che > ho fatto poco fa con la 3.0.1 direi che e' accettabile), usare > "CASUALE()*CASUALE()" dovrebbe produrre numeri molto meno "casuali" > del caso precedente, perche' schiacciati verso il basso: con > "CASUALE()" hai che il 50% dei numeri prodotti e' tra 0 e 0.5 e il > 50% tra 0.5 e 1; con "CASUALE()*CASUALE()" hai, in pieno accordo con > la teoria, che ben piu' di meta' dei numeri risultanti e' tra 0 e > 0.5. Infatti è così però sia io che te abbiamo trascurato un piccolo particolare e cioè che casuale() genera numeri casuali a partire da un numero radice e quindi garantisce con circa 1 possibilità su 1 milione che la stessa casuale() non generi consecutivamente lo stesso numero; qui però ci sono 90 casuale() indipendenti che generano numeri casuali e quindi effettivamente non si può escludere e nemmeno quantificare la probabilità che il primo numero generato da 2 di loro sia lo stesso a meno di conoscere l'implementazione del codice ed il criterio di scelta della radice di generazione. Effettivamente nella pratica l'uso di casuale()*casuale() sembra risolvere il problema (tutte le tue considerazioni sulla distribuzione e sulla densità dei numeri generati restano comunque valide). > > Anche il criterio empirico di sommare > [=ARROTONDA.ECCESSO(CASUALE()*90;1)] (per 90 volte) e > [=ARROTONDA.ECCESSO(CASUALE()*CASUALE()*90;1)] (sempre per 90 volte) > produce i risultati previsti: la somma e' vicina al fatidico 4095 nel > primo caso, molto piu' bassa nel secondo. > > Insomma, io non riesco proprio a capire se in questo modo hai risolto > il problema originario, cioe' ottenere i numeri interi da 1 a 90 > ordinati secondo una sequenza casuale. Se ce l'hai fatta, hai trovato > un grosso bug in Calc, dato che la probabilita' di riuscirci, che > puoi calcolare facilmente in Calc con > [=PERMUTAZIONE(90;90)/PERMUTAZIONA(90;90)], e' lo 0,0%! > > O forse ho capito male io e tu NON hai risolto il problema > originario... Se ce l'hai fatta per favore spiega esattamente quali > formule hai usato e in quali celle, in modo che io possa aprire una > segnalazione di bug se i numeri non sono abbastanza "casuali"! In sostanza bisognerebbe fare in modo che sia la stessa CASUALE() a generare tutti i 90 numeri oppure bisognere
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
nottolino ha scritto: > Ci sono quindi i comandi per generare numeri pseudocasuali, MA SEMPRE > ALLO STESSO MODO, in modo che si possa riprodurre la sequenza. > Roba tipo set.seed(12345) e altri comandi > In OO c'e' modo di ottenere sempre la stessa sequenza pseudocasuale ?? Queste tecniche si basano su (varianti piu' sofisticate di) quella che ho descritto nella mia prima risposta in questo thread, cioe' individuare, nel nostro esempio, un numero primo e un numero di partenza (derivati dal "seed" che citi) e ottenere una sequenza che e' completamente definita una volta assegnati quei parametri iniziali. Ciao, Andrea. - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Oscar ha scritto: > ho fatto delle prove, ho messo in piedi la tua idea con 90 numeri e una > sola =Casuale() Mi interessa tornare sull'argomento per controllare che non ci sia un colossale problema con la funzione CASUALE(), anche se credo di avere capito male io. Tu dici che hai scritto [=CASUALE()] in 90 celle, ad esempio A1:A90? > in una cella ho fatto in modo che mi calcoli la somma dei numeri che > uscivano e sapendo che il risultato doveva essere 4095 > S(1,2,x)=x/2*(x+1) E cosa c'entra una formula con numeri interi con il calcolo qui sopra, che produce numeri in virgola mobile? Allora usavi qualcosa tipo [=ARROTONDA.ECCESSO(CASUALE()*90;1)] in maniera da ottenere numeri interi tra 1 e 90? Oppure lo usavi semplicemente come stima per vedere che i tuoi numeri fossero "ben distribuiti"? > ho tenuto premuto i pulsanti CTRL+SHIFT+F9 > Ho constato che così uscivano spesso numeri doppi Ecco, questo e' il punto che mi interessa chiarire. Come controllavi se c'erano doppioni? Facendo la somma? Guardare il totale e' un criterio che, anche se tu lo usassi solo per numeri interi (quindi con la formula modificata come scritto sopra) e' troppo debole: se ti esce per 45 volte "1" e per 45 volte "90", la somma torna lo stesso, ma i doppioni ci sono! > mentre moltiplicando > =Casuale()*Casuale() > non ho avuto nessun doppione per un paio di minuti di fila Questo testimonia che non ho capito bene cosa facevi. Se il generatore di numeri "casuali" di Calc e' valido (e dalle prove che ho fatto poco fa con la 3.0.1 direi che e' accettabile), usare "CASUALE()*CASUALE()" dovrebbe produrre numeri molto meno "casuali" del caso precedente, perche' schiacciati verso il basso: con "CASUALE()" hai che il 50% dei numeri prodotti e' tra 0 e 0.5 e il 50% tra 0.5 e 1; con "CASUALE()*CASUALE()" hai, in pieno accordo con la teoria, che ben piu' di meta' dei numeri risultanti e' tra 0 e 0.5. Anche il criterio empirico di sommare [=ARROTONDA.ECCESSO(CASUALE()*90;1)] (per 90 volte) e [=ARROTONDA.ECCESSO(CASUALE()*CASUALE()*90;1)] (sempre per 90 volte) produce i risultati previsti: la somma e' vicina al fatidico 4095 nel primo caso, molto piu' bassa nel secondo. Insomma, io non riesco proprio a capire se in questo modo hai risolto il problema originario, cioe' ottenere i numeri interi da 1 a 90 ordinati secondo una sequenza casuale. Se ce l'hai fatta, hai trovato un grosso bug in Calc, dato che la probabilita' di riuscirci, che puoi calcolare facilmente in Calc con [=PERMUTAZIONE(90;90)/PERMUTAZIONA(90;90)], e' lo 0,0%! O forse ho capito male io e tu NON hai risolto il problema originario... Se ce l'hai fatta per favore spiega esattamente quali formule hai usato e in quali celle, in modo che io possa aprire una segnalazione di bug se i numeri non sono abbastanza "casuali"! Ciao, Andrea. - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Visto che siete preparati sull'argomento, azzardo un'altra richiesta sui numeri casuali. In altri software ("R" ad esempio), i numeri pseudo-casuali vengono generati a partire da un seme. Ci sono quindi i comandi per generare numeri pseudocasuali, MA SEMPRE ALLO STESSO MODO, in modo che si possa riprodurre la sequenza. Roba tipo set.seed(12345) e altri comandi In OO c'e' modo di ottenere sempre la stessa sequenza pseudocasuale ?? nottolino ha scritto: Se proprio ti serve ancora piu' casuale... http://www.random.org/ - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Se proprio ti serve ancora piu' casuale... http://www.random.org/ - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Maggiore è il numero di decimali e minore è la possibilità che i duplicati siano in realtà degli arrotondamenti per rispettare il formato della cella. Forse mi sono spiegato male, usando =Casuale() ottengo questo numero: 0,5698852539062500 =Casuale()*Casuale() ottengo quest'altro numero: 0,2245210576802490 Come vedi ho usato il massimo dei numeri decimali consentiti da Calc in tutti e due i casi. Sicuramente è come spiegavano Francesco e Nottorino, si tratta di pseudo-casuale quindi, quello che intendevo dire è che, con =Casuale() su 90 numeri si verificano spesso numeri doppi mentre con =Casuale()*Casuale() sempre su 90 numeri, i doppi sono molto rari (nel mio breve test non ne sono mai usciti). tutto qui. - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Oscar ha scritto: >> non vorrei darti una cattiva notizia ma questo non fa diminuire la >> probabilità che i numeri generati siano uguali, è sufficiente una sola > > ho fatto delle prove, ho messo in piedi la tua idea con 90 numeri e > una sola =Casuale() 1. casuale() è una funzione definita sui numeri reali quindi visto che in matematica l'intervallo è continuo, se vuoi che la funzione operi correttamente è necessario utilizzarla in un intervallo continuo, quindi più è limitato il numero di decimali "meno è continuo" l'intervallo. Mi spiego: (0,1) ha infiniti valori ma se tu ometti il numero di decimali si riduce a 2 valori, con 1 decimale a 11 valori e così via. Maggiore è il numero di decimali e minore è la possibilità che i duplicati siano in realtà degli arrotondamenti per rispettare il formato della cella. > > in una cella ho fatto in modo che mi calcoli la somma dei numeri che > uscivano e sapendo che il risultato doveva essere 4095 > > S(1,2,x)=x/2*(x+1) 2. scusa non capisco cosa vorresti dimostrare o non interpreto correttamente S(1,2,x) Se vuoi rifarti alla proprietà della somma di un intervallo continuo di numeri naturali fai pure (somma(1,...n) = [n * (n+1)]/2 ma la devi applicare all'array di celle dove applichi la funzione rango(). Se invece ti rifai al limite di una serie sui numeri reali... è un limite non un valore preciso. RANGO Restituisce il rango di un valore in un campione. Sintassi RANGO(Numero; Dati; Ordine) *Numero* è il numero di cui si desidera ricercare il rango. *Dati* è la matrice dei dati nel campione. *Ordine* (opzionale) specifica in che modo si devono disporre i numeri. Tipo = 0 indica l'ordine discendente dall'ultimo elemento della matrice al primo (impostazione predefinita), Tipo = 1 indica l'ordine ascendente dal primo elemento dell'intervallo all'ultimo. Esempio =RANGO(A10; A1:A50) indica il rango del numero in A10 all'interno dei numeri nell'area A1:A50. Se Valore è fuori dall'intervallo, viene visualizzato un messaggio di errore. Mi sembra più intuitivo fare un copia/incolla speciale (solo numeri) e poi fare un ordina e verificare che i valori siano tutti quelli compresi nel tuo intervallo. Mi sono preso la briga di creare una serie di 90 valori contenenti dei duplicati e ho verificato che l'array prodotto da rango() non contiene comunque dei dati duplicati quindi pesno che la soluzione sia ottimale. > > ho tenuto premuto i pulsanti CTRL+SHIFT+F9 > > Ho constato che così uscivano spesso numeri doppi, mentre moltiplicando > > =Casuale()*Casuale() > > non ho avuto nessun doppione per un paio di minuti di fila > > forte no? ;-) > > - > To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org > For additional commands, e-mail: utenti-h...@it.openoffice.org > > > - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
scusa quanti decimali hai utilizzato? Perchè l'intervallo (0,1) è sui numeri reali ma se limiti il numero di decimali causi arrotondamenti. ho utilizzato il massimo dei numeri decimali!!! Sono rimasto stupito anch'io di quanto facilmente possano uscire numeri casuali uguali (almeno su 90). - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Io faccio cosi, quando debbo randomizzare un esperimento (assegnare a caso il trattamento). Faccio una lista ordinata in una colonna (soggetto A, B C D etetc) Nella colonna accanto inserisco la funzione "casuale()", e la ripeto per ogni cella. Poi trasformo i dati da formule a valori Quindi ho una colonna ordinata e una pseudo casuale (ma che per i mie scopi va piu' che bene). Ordino per la colonna casuale e quindi ho come risultato una colonna di soggetti ordinati casualmente. Se invece voglio ripetere l'estrazione, non trasformo i valori. In questo modo tutte le volte che do un enter i numeri pseudo casuali cambiano (credo che "casuale" parta da un seme collegato alla data/ora del computer) e io ottengo un nuovo ordinamento casuale (OK pseudo, ma piu' che sodisfacente per usi comuni) della lista originale 8rino Oscar ha scritto: ciao a tutti, siete a conoscenza di un metodo semplice per ordinare in modo casuale una certa sequenza di numeri con Calc? Es: 1,2,3,4,5,6,7,etc.. riordinati casualmente Ho visto che si ha a disposizione la funzione Casuale.tra(min;MAX), pensavo di piazzare la formula su una serie di celle, ma in questo modo - logicamente - potrei ottenere più numeri uguali. grazie Oscar - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Oscar ha scritto: >> non vorrei darti una cattiva notizia ma questo non fa diminuire la >> probabilità che i numeri generati siano uguali, è sufficiente una sola > > ho fatto delle prove, ho messo in piedi la tua idea con 90 numeri e > una sola =Casuale() > > in una cella ho fatto in modo che mi calcoli la somma dei numeri che > uscivano e sapendo che il risultato doveva essere 4095 > > S(1,2,x)=x/2*(x+1) > > ho tenuto premuto i pulsanti CTRL+SHIFT+F9 > > Ho constato che così uscivano spesso numeri doppi, mentre moltiplicando scusa quanti decimali hai utilizzato? Perchè l'intervallo (0,1) è sui numeri reali ma se limiti il numero di decimali causi arrotondamenti. > > =Casuale()*Casuale() > > non ho avuto nessun doppione per un paio di minuti di fila > > forte no? ;-) > > - > To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org > For additional commands, e-mail: utenti-h...@it.openoffice.org > > > - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
non vorrei darti una cattiva notizia ma questo non fa diminuire la probabilità che i numeri generati siano uguali, è sufficiente una sola ho fatto delle prove, ho messo in piedi la tua idea con 90 numeri e una sola =Casuale() in una cella ho fatto in modo che mi calcoli la somma dei numeri che uscivano e sapendo che il risultato doveva essere 4095 S(1,2,x)=x/2*(x+1) ho tenuto premuto i pulsanti CTRL+SHIFT+F9 Ho constato che così uscivano spesso numeri doppi, mentre moltiplicando =Casuale()*Casuale() non ho avuto nessun doppione per un paio di minuti di fila forte no? ;-) - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Forse non hai letto bene la mia risposta. Non c'è trucco; la funzione sì, l'ho letta e la trovo eccellente!! - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Oscar ha scritto: > Si potrebbe risolvere il problema scrivendo una macro, ma l'idea è > quella di riuscirci usando celle e funzioni di Calc. Per quello avevo > usato il termine TRUCCO (virgolettato). > > Attualmente, la soluzione più ingegnosa al problema credo sia quella > di Paolo, usando la funzione RANGO. Ho provato con i numeri dall'1 al > 90 con > > =CASUALE()*CASUALE() non vorrei darti una cattiva notizia ma questo non fa diminuire la probabilità che i numeri generati siano uguali, è sufficiente una sola CASUALE() e comunque la probabilità di generazione di numeri casuali con CASUALE() è di 1 su un milione circa dato l'algoritmo utilizzato. Ovviamente la funzione RANGO ti annulla la possibilità che nell'array risultato ci siano risultati doppi. E la soluzione che ti ho proposto fa uso solo di celle e funzioni, nessuna macro. > > e ricalcolando di seguito per un paio di minuti non si è mai > verificato di avere un numero doppio; logicamente questo non lo > esclude dal tutto! > > - > To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org > For additional commands, e-mail: utenti-h...@it.openoffice.org > > > - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Si potrebbe risolvere il problema scrivendo una macro, ma l'idea è quella di riuscirci usando celle e funzioni di Calc. Per quello avevo usato il termine TRUCCO (virgolettato). Attualmente, la soluzione più ingegnosa al problema credo sia quella di Paolo, usando la funzione RANGO. Ho provato con i numeri dall'1 al 90 con =CASUALE()*CASUALE() e ricalcolando di seguito per un paio di minuti non si è mai verificato di avere un numero doppio; logicamente questo non lo esclude dal tutto! - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Oscar ha scritto: > Ringrazio tutti per le risposte, bella l'idea di usare i numeri primi > (adoro i numeri primi), ma come giustamente hai precisato non ottengo > una sequenza casuale. > > Il mio obiettivo è una sequenza casuale di numeri dall'1 a x. Ad > esempio con tre numeri avere: 1,2,3 oppure 2,3,1 oppure 1,3,2 etc. > > Deve esserci un "trucco" matematico che mi permetta questo!! Ci > penserò e vi farò sapere. Forse non hai letto bene la mia risposta. Non c'è trucco; la funzione CASUALE() genera numeri casuali nell'intervallo 0..1 (numeri reali) con 1 probabilità su 1 milione. Nel tuo caso la soluzione più semplice è quella di utilizzare un generatore di numeri casuali in un array di celle (es 10 celle in colonna) ed in ognuna di queste celle devi inserire la formula =CASUALE(). Poi selezioni un array di celle uguale all'altro; quindi se il primo array è A1...A10 il secondo sarà B1...B10 ed utilizzando l'inserimento di formula per matrice (ctrl+shift+invio) inserisci in B1 la formula =RANGO(A1:A10;A1:A10) così da prendere la posizione della cella e non il numero contenuto. Quindi se tu vuoi ottenere n numeri casuali diversi in un intervallo di 90 valori devi usare 2 array di 90 posti e dal secondo array prendi i primi n valori generati. > > - > To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org > For additional commands, e-mail: utenti-h...@it.openoffice.org > > > - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
At 11:05 10.03.2009, Oscar wrote: >Ringrazio tutti per le risposte, bella l'idea di usare i numeri primi (adoro i >numeri primi), ma come giustamente hai precisato non ottengo una sequenza >casuale. > >Il mio obiettivo è una sequenza casuale di numeri dall'1 a x. Ad esempio con >tre numeri avere: 1,2,3 oppure 2,3,1 oppure 1,3,2 etc. > >Deve esserci un "trucco" matematico che mi permetta questo!! Ci penserò e vi >farò sapere. Non esiste "trucco". Esiste "algoritmo" ma se è algoritmo non è veramente casuale. Possiamo pero' avvicinarci alla casualità. Ad una buona simulazione. Il computer, essendo una macchina, puo' solo simulare, non fare. Sta a noi, a seconda di casi, accettare la simulazione. Se è una fattura, accetto la simulazione. Se è una banconota da 500, non accetto la simulazione. Un numero pseudo casuale sta a metà strada e la sua accettazione dipende dagli obiettivi che hai. Secondo me la migliore soluzione, in termini di semplicità, l'ha data guido, con la precisazione che per il lotto il range è 1-90, non 0-90. Ciao, FF - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Ringrazio tutti per le risposte, bella l'idea di usare i numeri primi (adoro i numeri primi), ma come giustamente hai precisato non ottengo una sequenza casuale. Il mio obiettivo è una sequenza casuale di numeri dall'1 a x. Ad esempio con tre numeri avere: 1,2,3 oppure 2,3,1 oppure 1,3,2 etc. Deve esserci un "trucco" matematico che mi permetta questo!! Ci penserò e vi farò sapere. - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Paolo Giovanni Zanin ha scritto: > gumo...@email.it ha scritto: > > per avere n numeri casuali distinti (tra 0 e 90) > > puoi scrivere in 100 celle la formula =90*casuale() > > oppure =Casuale.tra(0;90) > > E ti prendi i primi n numeri DISTINTI che ti servono > Una proposta "semplice", ma non impeccabile: > se si volgliono i numeri da 1 a 10 in ordine "causuale": > nelle celle da a1 a a10: "=casuale()"; Allora mi diverto un po' anch'io... un modo pulito, e nemmeno tanto difficile, e' quello di usare un numero primo a caso (su Internet trovi tavole a volonta', a te basta un numero primo piu' grande del numero di dati che devi ordinare) e fare i calcoli con quello. Immaginiamo, per comodita', che tu debba mettere in ordine "casuale" i numeri tra 0 e 9 (cioe' 10 numeri). In A1 inserisci un numero primo (esempio: 23) In B1 inserisci un numero "casuale" iniziale [=casuale.tra(0;9)] In C1 inserisci [=RESTO(B1+$A1;10)] Trascini la formula a piacimento (fino a K1 se vuoi 10 numeri) e non avrai ripetizioni. Anche questa non e' impeccabile (si puo' generalizzare; non e' casuale per nulla, e su numeri piccoli si nota; ci sono numeri primi che non si prestano bene, come sarebbe stato 31 nel nostro esempio), ma forse per i tuoi scopi puo' bastare. Ciao, Andrea. - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
gumo...@email.it ha scritto: per avere n numeri casuali distinti (tra 0 e 90) puoi scrivere in 100 celle la formula =90*casuale() oppure =Casuale.tra(0;90) E ti prendi i primi n numeri DISTINTI che ti servono Una proposta "semplice", ma non impeccabile: se si volgliono i numeri da 1 a 10 in ordine "causuale": nelle celle da a1 a a10: "=casuale()"; in b1: "=rango(a1;$a$1:$a$10)", in pratica la "classifica" dei numeri casuali estratti: questi numeri nella colonna B costituiscono la sequenza desiderata. Naturalmente in questa classifica ci potrebbe essere un ex-aequeo (e quindi una ripetizione): nel caso in cui due numeri causali estratti nella prima colonna fossero uguali (ma la probabilità non è "molto alta"): in quel caso si potrebbe "ripetere l'estrazione" Paolo - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
- Original Message Da: utenti@it.openoffice.org To: utenti@it.openoffice.org Oggetto: Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC Data: 09/03/09 17:27 > > > > > Se cerchi un "metodo semplice" io non lo vedo. La semplicità è funzione della richiesta... e dell'utilizzo. Le soluzioni perfette spesso contrastano con le soluzioni buone. per avere n numeri casuali distinti (tra 0 e 90) puoi scrivere in 100 celle la formula =90*casuale() oppure =Casuale.tra(0;90) E ti prendi i primi n numeri DISTINTI che ti servono Suggerisco di scrivere + formule rispetto ai numeri che ti servano realmente per evitare il problema reale della collisione. La probabilità che escano due numeri uguali in questo esempio è di circa 1/1800. Questa probabilità potrebbe essere o meno accettabile . Dipende solamente da come devi usare tali numeri Guido -- Caselle da 1GB, trasmetti allegati fino a 3GB e in piu' IMAP, POP3 e SMTP autenticato? GRATIS solo con Email.it: http://www.email.it/f Sponsor: Sviluppa il tuo business e trova nuovi clienti con il Direct Email Marketing di Email.it, la strategia vincente per rafforzare la notorieta'della tua impresa! Clicca qui: http://adv.email.it/cgi-bin/foclick.cgi?mid=8349&d=20090309 - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Oscar ha scritto: >> Per essere casuale occorre una certa quantità di intederminazione, o >> fuzzy logic, il che non mi pare sia prevista in alcuna funzione calc. > > peccato, grazie lo stesso! > > Oscar Per quanto riguarda la generazione di numeri casuali ti rimando a google; in generale si possono usare metodi tipo i millesimi di secondo a partire dall'accensione del PC e altre cose legate all'uso del timer di sistema. Comunque calc prevede CASUALE che genera un numero casuale tra 0 e 1 (eq. funzione RAND) e CASUALE.TRA che ti permette di scegliere un intervallo a piacere (rimappa in qualche modo l'intervallo 0,1 sull'intervallo desiderato. Equivalgono rispettivamente a RAN e RAND.BETWEEN. Nell'uso pratico ai fini calcolo delle probabilità e statistica van bene ma se vuoi sapere quale algoritmo usano non lo so. In generale comunque si parla di algoritmi che generano numeri pseudo-casuali anche se ti assicuro che per l'uso comune questi algoritmi sono più che sufficienti. Se devi gestire le estrazioni tipo lotto devi anche gestire i numeri già usciti cin un array e limitarti a ripetere la generazione finchè viene generato un numero che non è già uscito. > > - > To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org > For additional commands, e-mail: utenti-h...@it.openoffice.org > > > - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
At 14:57 09.03.2009, Oscar wrote: >>Per essere casuale occorre una certa quantità di intederminazione, o fuzzy >>logic, il che non mi pare sia prevista in alcuna funzione calc. > >peccato, grazie lo stesso! > >Oscar ovviamente il fatto che nessun computer possa generare numeri realmente casuali, non significa che ci si possa avvicinare molto. Per risolvere il tuo problema ritengo che non basti un semplice insieme di celle con delle formule ma che ci voglia un programmino (in Open Office basic) con delle interazioni ricorsive. Se cerchi un "metodo semplice" io non lo vedo. Ciao, Francesco - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
Per essere casuale occorre una certa quantità di intederminazione, o fuzzy logic, il che non mi pare sia prevista in alcuna funzione calc. peccato, grazie lo stesso! Oscar - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
At 14:35 09.03.2009, Oscar wrote: >>la vera causuaità è con rietizione, in quanto in ogni evento ogni >>numero ha la stessa possibilità di essere estratto del precedente. > >infatti, mi sono spiegato male. Avrei bisogno di un ordinamento casuale tra >una serie di numeri, o come meglio suggerivi tu: un'estrazione tipo lotto. allora devi prevedere "n" eventi estrattivi casuali, ognuno basato su un pool di mumeri che non comprenda i numeri già estratti prima. Considera che comunque, sul piano puramente speculativo, nessun numero selezionato da un algoritmo puo' essere casuale. Se è un algoritmo, è ripetibile. Quindi non è casuale. Il computer è una macchina di türing e quindi puo' solo seguire algoritmi deterministici. Non puo' essere casuale, ma solo avvicinarsi abbastanza ad una parvenza di casualità. Per essere casuale occorre una certa quantità di intederminazione, o fuzzy logic, il che non mi pare sia prevista in alcuna funzione calc. Ciao, Francesco - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
la vera causuaità è con rietizione, in quanto in ogni evento ogni numero ha la stessa possibilità di essere estratto del precedente. infatti, mi sono spiegato male. Avrei bisogno di un ordinamento casuale tra una serie di numeri, o come meglio suggerivi tu: un'estrazione tipo lotto. - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org
Re: [utenti] Domanda curiosa su generazione numeri casuali con CALC
At 13:51 09.03.2009, Oscar wrote: >ciao a tutti, > >siete a conoscenza di un metodo semplice per ordinare in modo casuale una >certa sequenza di numeri con Calc? > >Es: 1,2,3,4,5,6,7,etc.. riordinati casualmente > >Ho visto che si ha a disposizione la funzione Casuale.tra(min;MAX), pensavo di >piazzare la formula su una serie di celle, ma in questo modo - logicamente - >potrei ottenere più numeri uguali. ovvio. la sequenza 1,1,1,1,1,1,1,1,1,1 ha la stessa casualità della sequenza 1,5,4,3,7,6,2,4,2,9,8,8. Occorre infatti distingere tra casualità con o senza ripetizione. la vera causuaità è con rietizione, in quanto in ogni evento ogni numero ha la stessa possibilità di essere estratto del precedente. Quindi la combinazione 5, 6 è identica a 5,5 e 6,6 quando a possibilità. Se stai invece simulando una estrazione tipo lotto, dove un numero estratto una volta non puo' piu' essere estratto la seconda volta (perchè la sfera contenente in nuero non è piu' nell'urna, allora devi procedere con "n" estrazioni diverse, dove ogni volta elimini dal pool i numenri che sono già usciti. FF - To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org For additional commands, e-mail: utenti-h...@it.openoffice.org