Newsgroup: it.hobby.enigmi
Titolo: Combinazioni (Fattoriale)

tempo fa annotai questo dal forum:
  ' Il numero di combinazioni di k numeri che si possono fare
  ' con n numeri e' uguale a n!/(k! * (n-k)!) dove il ! denota
  ' il fattoriale
ho fatto una prova e se aumento troppo il k il numero generato diminuisce! č
normale?
vorrei sapere ad esempio avendo a disposizione le lettere dell'alfabeto
inglese ed i numero dallo 0 al 9 che stringhe posso generare, le
combinazioni possibili. Ora se la stringa fosse di 1 carattere potrei farlo
a mente chiaramente, ma se i caratteri fossero 12 oppure 20? come dovrei
scrivere l'operazione sopra in modo che mi dia un risultato corretto? Ho una
funzione che mi calcola il fattoriale, e dovrebbe essere giusta (vedi sopra)
solo che forse sbaglio qualcosa...
-- 
 _____________________________________________________________
|                                                             |
| Coboldo.Net: 
www.coboldo.net
    ~ ~ ~ ~ ~ Blog Gratuito     |
|-------------------------------------------------------------|
| Ludico.Net: 
www.ludico.net
      ~ ~ ~ ~ ~ Cazzeggio         |
|-------------------------------------------------------------|
| AGATA Quest: 
agata.ludico.net
   ~ ~ ~ ~ ~ Enigmi            |
|-------------------------------------------------------------|
| CineQuest Pro: 
www.ludico.net/cquest.asp
  Film Invisibili)  |
|--------------------------------------------------------------

 scrivere l'operazione sopra in modo che mi dia un risultato corretto?
Lettere dell'alfabeto inglese: 26 lettere
Numeri da 0 a 9: 10 numeri
In totale hai 36 oggetti.
Il massimo numero di combinazioni le hai con k=18.
(36 | 1) = 36    [= (36 | 35)]
(36 | 2) = 630    [= (36 | 34)]
(36 | 3) = 7140   [= (36 | 33)]
....
(36 | 17) = 8.597.496.600       [= (36 | 19)]
(36 | 18) = 9.075.135.300  (più di 9 miliardi)
(36 | 19) = 8.597.496.600      [= (36 | 17)]
....
(36 | 35) = 36     [= (36 | 1)]
(36 | 36) = 1
Per generare tutte le possibili combinazioni devi farti un SW.

 scrivere l'operazione sopra in modo che mi dia un risultato corretto?
Se vuoi avere il numero totale di stringhe di m elementi che puoi fare
con n simboli (anche ripetuti), considerando diverse due stringhe anche
per l'ordine dei simboli, tale numero è dato da n^m.
Esempio: con tre simboli "a", "b", "c" hai 3^2=9 diverse stringhe di 2
elementi: "aa", "ab", "ac", "ba", "bb", "bc", "ca", "cb", "cc".
Se invece vuoi avere il numero totale di stringhe di m elementi (diversi
fra loro) che puoi fare con n simboli, considerando diverse due stringhe
anche per l'ordine dei simboli, tale numero è dato da n!/(n-m)!.
Esempio: con tre simboli "a", "b", "c" hai 3!/1!=6 diverse stringhe di 2
elementi: "ab", "ac", "ba", "bc", "ca", "cb".
Maurizio


Assolutamente si'.
Ti do una spieganzione intuitiva prendere k elementi da un insieme di n
equivale a lasciarne n-k.
Quindi il numero di possibili sottoinsiemi di k elementi presi da un
insieme di n e' uguale a quello di possibili sottoinsiemi di n-k
elementi.
A questo punto, se parti da 1 e k, dopo aver superato n/2 e' come se tu
tornassi indietro verso 1.
Chiaro?

Il bragozzi ha scritto:

Chiaro un cavolo. L'ultima frase e' incomprensibile.
A questo punto, se assegnando i valori a k parti da 1, dopo aver



posso farlo.

 elementi: "aa", "ab", "ac", "ba", "bb", "bc", "ca", "cb", "cc".
esatto è questo che mi serve ^___^ il simbolo può essere ripetuto e la
posizione è rilevante ab e ba per me sono diversi e rappresentano due
chiavi differenti così come aa o bb quindi se ho capito nel mio caso
dove ho 36 simboli (lettere + numeri) e mettiamo 20 posiziono posso
avere 36^20 combinazioni possibili, è giusto?
La calcolatrice di windows (niente software) mi da questo numero:
13.367.494.538.843.734.067.838.845.976.576 temo di non riuscire a leggerlo
                        ^ 67 mila miliardi, olte non ci riesco è possibile
                             leggere questa cifra in italiano? :)
che probabilità c'è di indovinare una combinazione? possiamo dire che è
nulla? ovvero che indovinarla potrebbe rappresentare quello che il manhattan
di Moore chiama un miracolo della termodinamica?


ha scritto nel messaggio
news:456f8719$0$19242$4faf...@reader4.news.tin.it...
grazie a tutti mi sono spiegato male ma Maurizio ha intuito o indovinato
qullo
che tentavo di chiedervi ^___^ devo realizzare degli ID con cui gli utenti
possano accedere a dei contenuti 36^20 combinazioni assicurano una certa
protezione, ovviamente li avviserò che il sistema ha una percentuale di
fallimento pari al x% dove X equivale (codi dice calc.exe =) esattamente a:
7,480833428389777583363009762804e-32

 che n combinazioni mi bastano quindi inutile generarne n*2 ecc...
Dunque, se un simbolo puo' apparire piu' volte, il numero giusto l'ha 
fornito Maurizio, n^k.
Se invece le ripetizioni non sono ammesse, allora ti serve il numero 
delle distribuzioni di n elementi presi k a k; il loro numero e' dato 
dalla formula n!/(n-k)!, ovvero il prodotto di una serie discendente di 
k numeri partendo da k (ad esempio, se n=9 e k=6, 9*8*7*6*5*4, ovvero 
7!/3!). Sono ovviamente meno di quelle di Maurizio, ma son sempre tante.
bye
-- 
Paolo Lucchesi
email: plucchesiNOSPAM(at)NOSPAMtin(dot)NOSPAMit
homepage: 
http://www.paololucchesi.it
"Non viviamo in un mondo perfetto (per fortuna)"

 fornito Maurizio, n^k.
esatto, per curiosità che probabilità c'è di avere per 36^20 una stringa
di tutti simboli uguali?

"Ludico.Net" ha scritto


Casi possibili: 36^20
Casi favorevoli: 36
Probabilità: 36 / (36^20) = 1 / (36^19) =
2,6931000342203199300106835146095e-30
o se vuoi 1 su 371319292745659279662190166016


abbastanza improbabile direi :)
secondo te, o meglio in matematica, x^y conviene
aumentare X oppure Y per avere un numero maggiore
di combinazioni, oppure è uguale?

Ludico.Net ha scritto:

Se calcoliamo le derivate:
d(x^y)/dx = y * (x^(y-1))
d(x^y)/dy = (x^y) * log(x)
Supponendo che la prima sia maggiore della seconda:
y * (x^(y-1)) > (x^y) * log(x)
y > x * log(x)
Quindi se y> x * log(x) conviene aumentare x, altrimenti y.


ed io come lo calcolo un logaritmo? sempre che di questo si tratti.

"Ludico.Net" ha scritto

Con la calcolatrice??? Ce l'hai anche sul PC....
Scrivi il numero e poi tastino "log" per il logaritmo in base 10, "ln" per
il logaritmo in base e

 il sistema ha una percentuale di fallimento pari al x% dove X equivale a: 7,48e-32
Fatica sprecata. Ci sono molte ma molte ma molte più probabilità che
muoiano di infarto mentre digitano, o al limite che un alieno gli venga
a suggerire la combinazione giusta. Li vogliamo avvertire anche di
questi rischi?
-- 
Ciao, Silv:o)

Marco ha scritto:

In questo caso usa ln. Mi riferivo al logaritmo naturale.

 il logaritmo in base e
ma no io intendo da codice ^___^ quale operazione equivale ad un logaritmo?

 questi rischi?
lo farò! :)

"Ludico.Net" ha scritto

In genere tutti i linguaggi di programmazione hanno le funzioni matematiche
tipo sin, cos, log, ...
Ad esempio in C si ha "log" (per il logaritmo naturale) e "log10" (per il
logaritmo in base 10) (da includere "math.h").

 ma no io intendo da codice ^___^ quale operazione equivale ad un logaritmo?
Dipende. Che linguaggio stai usando?

 tipo sin, cos, log, ...
si non mi sono spiegato, intendo che calcolo è un logaritmo se
dovessi farlo solo con + - * / e ^ ad esempio?

"Ludico.Net" ha scritto

Puoi usare lo sviluppo in serie della funzione logaritmo.
http://it.wikipedia.org/wiki/Serie_di_Taylor