Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-10-2010, 11:06   #1
pare93
Member
 
L'Avatar di pare93
 
Iscritto dal: Jul 2009
Messaggi: 268
[C#] Combinazione semplice

Ragazzi qualcuno riesce a tradurmi la combinazione semplice (n x) oppure nCx in linguaggio C# ... non riesco proprio a darne fuori
Ricordo che (n x) = n! / (x! * (n - x)!)
Grazie mille
pare93 è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2010, 11:27   #2
Rsk
Senior Member
 
L'Avatar di Rsk
 
Iscritto dal: Dec 2006
Messaggi: 314
Quote:
Originariamente inviato da pare93 Guarda i messaggi
Ragazzi qualcuno riesce a tradurmi la combinazione semplice (n x) oppure nCx in linguaggio C# ... non riesco proprio a darne fuori
Ricordo che (n x) = n! / (x! * (n - x)!)
Grazie mille
Cosa non riesci a fare?
Il fattoriale (!) di N è dato dal prodotto dei primi N numeri interi positivi.
Inoltre il fattoriale di zero è 1.
Se realizzi la funzione che calcola il fattoriale hai finito..
Provaci
__________________
Athlon64 x2 5600 - AsRock ALiveNF5eSata2+ - kingston 2GB ddr2 800 - GeForce 8800gts 320MB
Rsk è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2010, 11:35   #3
pare93
Member
 
L'Avatar di pare93
 
Iscritto dal: Jul 2009
Messaggi: 268
Ci proverò ancora ma non assicuro niente
pare93 è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2010, 12:14   #4
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
Quote:
Originariamente inviato da pare93 Guarda i messaggi
Ragazzi qualcuno riesce a tradurmi la combinazione semplice (n x) oppure nCx in linguaggio C# ... non riesco proprio a darne fuori
Ricordo che (n x) = n! / (x! * (n - x)!)
Grazie mille
giusto per la precisione, quello è il binomio di newton, che rappresenta anche il numero di combinazioni semplici di n elementi presi k a k (quindi identificarlo con le combinazioni semplici non è propriamente corretto)

e poi, chiaramente, sarebbe inefficiente calcolare tutti i fattoriali uno per uno, ti conviene cercare un metodo un minimo più furbo, ad esempio sfruttando il fatto che

n!/k! = n * (n - 1) * ... * (n - k + 1)

oppure

puoi prepararti un vettore V di dimensione n+1, in cui poni v[0] = 1 (perché 0! = 1)

e poi calcoli tutte le celle V[i] = i * V[i - 1]

così almeno avrai calcolato tutti i fattoriali che ti servono e potrai calcolare tutto con V[n] / (V[x] * V[n - x])
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2010, 18:50   #5
pare93
Member
 
L'Avatar di pare93
 
Iscritto dal: Jul 2009
Messaggi: 268
Si capisco il metodo che vorresti usare ma sinceramente a me sembra troppo lungo e con un grande spreco di memoria.

Domani cerco di sviluppare un algoritmo ... Grazie lo stesso comunque

Inoltre devo dire che la tua idea è molto interessante non ci avrei mai pensato
pare93 è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2010, 20:37   #6
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
boh sì ma è chiaro che non ti serve a molto in questo caso, ti conviene calcolarli iterativamente

l'unica cosa è stare attenti a non fare prodotti già fatti precedentemente
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2010, 16:58   #7
pare93
Member
 
L'Avatar di pare93
 
Iscritto dal: Jul 2009
Messaggi: 268
In che senso non fare prodotti già fatti in precedenza?

Ad ogni modo ci ho pensato ora a mente lucida ... posto il codice che mi è venetuto.

Premetto che non l' ho testato lo stò facendo al momento perchè sono in un computer della scuola

Ricordo la formula che è nCx = n! / x! * (n - x)!

Codice:
int fattN = n, fattX = x, fattNX = n - x;
double comb;

// Calcolo di n!
for (int i = 1; i <= n; i++)
      fattN *= n - i;

// Calcolo di x!
for (int i = 1; i <= x; i++)
      fattX *= x - i;

// Calcolo di (n - x)!
for (int i = 1; i <= (n - x); i++)
      fattNX *= (n - x) - i;

// Infine calcolo la combinazione semplice
comb = fattN / fattX * fattNX;
Ecco credo sia giusto ma il problema non è finito qui
Infatti io ero partito nel calcolare il valore atteso in una distribuzione binomiale ... ci proverò dai ...
pare93 è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2010, 17:11   #8
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
non va! così ti fai 3 fattoriali che ti puoi facilmente risparmiare con qualche condizione al contorno ed un po' di semplificazioni
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2010, 17:13   #9
astorcas
Senior Member
 
L'Avatar di astorcas
 
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
Mai sentito parlare di memoizzazione (in english memoization)?

Basterebbe l'esempio su wikipedia per chiarirti cosa ti stanno suggerendo gli altri
astorcas è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2010, 18:03   #10
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
Quote:
Originariamente inviato da pare93 Guarda i messaggi
In che senso non fare prodotti già fatti in precedenza?

Ad ogni modo ci ho pensato ora a mente lucida ... posto il codice che mi è venetuto.

Premetto che non l' ho testato lo stò facendo al momento perchè sono in un computer della scuola

Ricordo la formula che è nCx = n! / x! * (n - x)!

Codice:
int fattN = n, fattX = x, fattNX = n - x;
double comb;

// Calcolo di n!
for (int i = 1; i <= n; i++)
      fattN *= n - i;

// Calcolo di x!
for (int i = 1; i <= x; i++)
      fattX *= x - i;

// Calcolo di (n - x)!
for (int i = 1; i <= (n - x); i++)
      fattNX *= (n - x) - i;

// Infine calcolo la combinazione semplice
comb = fattN / fattX * fattNX;
Ecco credo sia giusto ma il problema non è finito qui
Infatti io ero partito nel calcolare il valore atteso in una distribuzione binomiale ... ci proverò dai ...
il valore atteso della binomiale di parametri n p (n lanci con probabilità di successo p) è np

basta pensarla come n eventi A1 .. An che indicano che all'estrazione i-esima c'è un successo.. dunque puoi prendere in considerazione le variabili indicatrici degli eventi Ai, che hanno tutti probabilità di successo p e sono scambiabili, quindi la media è np

per quanto riguarda il calcolo del fattoriale (che non serve, se quello che devi fare è la media della binomiale) quando dicevo che non dovresti fare prodotti già fatti intendo dire che per calcolare (n-k)! in pratica fai

1*2*...*(n-k)

e per calcolare n!

1*2*...*(n-k)*..*n! = (n-k)!*...*n

ecco, non vale la pena fare due volte questi prodotti (il discorso si estende anche a k!)

Ultima modifica di tuccio` : 11-10-2010 alle 18:06.
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2010, 16:36   #11
pare93
Member
 
L'Avatar di pare93
 
Iscritto dal: Jul 2009
Messaggi: 268
Bè da ma punto di vinta sintattico i duo metodo sono praticamente identici ... sono sompre tre cicli for che vanno da 1 ad n.

Ad ogni modo la speranza matematica in una distribuzione binomiale è data anche dalla sommatoria delle P(X=x) che va da zero ad n.

Quindi avevo pensato anche all' eventualità che l' utente non inserisca 'p' e di conseguenza calcolerei la media con la sommatoria.

Quindi una soluzione logica l' avei già trovata ... scompongo il valore atteso in :
sommatoria della combinazione semplice per la sommatoria della p^x per la sommatoria della q^(n-x). In questo modo risulta molto semplice secondo me tradurla.

Comunque ora ti espongo queste idee ma in questi giorni non ho possibilità di provarla ...
pare93 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Apple punterà sull'architettura c...
NASA Curiosity: i processi non biologici...
Sega conferma l'arrivo di tanti nuovi gi...
La serie POCO X8 è pronta al debu...
Apple conferma che l'arrivo della 'nuova...
Le vendite di Square Enix sono in netto ...
iPhone 17e si mostra in un video 'first ...
Il nuovo Xiaomi Watch 5 è pronto ...
Steam Deck è out of stock in dive...
Le migliori offerte Amazon del weekend, ...
PC più potente, meno spesa: su Amazon ta...
Amazon Haul: come fare acquisti 'pazzi' ...
Threads permetterà agli utenti di...
Monitor gaming in offerta su Amazon: 180...
Samsung vuole riconquistare la leadershi...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:45.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v