Torna indietro   Hardware Upgrade Forum > Software > Programmazione

WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro
Con Midnight, Blizzard tenta il colpaccio: il player housing sbarca finalmente su Azeroth insieme a una Quel'Thalas ricostruita da zero. Tra il dramma della famiglia Ventolesto e il nuovo Prey System, ecco com'è la nuova espansione di World of Warcraft
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Nuova frontiera per i robot tagliaerba, con Ecovacs GOAT O1200 LiDAR Pro che riconosce l'ambiente in maniera perfetta, grazie a due sensori LiDAR, e dopo la falciatura può anche rifinire il bordo con il tagliabordi a filo integrato
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Equilibrio e potenza definiscono il Samsung Galaxy S26+, un flagship che sfida la variante Ultra e la fascia alta del mercato con il primo processore mobile a 2nm. Pur mantenendo l'hardware fotografico precedente, lo smartphone brilla per un display QHD+ da 6,7 pollici d'eccellenza, privo però del trattamento antiriflesso dell'Ultra, e per prestazioni molto elevate. Completano il quadro la ricarica wireless a 20W e, soprattutto, un supporto software settennale
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-10-2010, 10: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, 10: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, 10: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, 11: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, 17: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, 19: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, 15: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, 16: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, 16: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, 17: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 17:06.
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2010, 15: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


WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro WoW: Midnight, Blizzard mette il primo, storico ...
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere? Recensione Samsung Galaxy S26+: sfida l'Ultra, m...
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
Marathon: arriva il Fortnite hardcore Marathon: arriva il Fortnite hardcore
Artemis II: per la prima volta degli ast...
Battery swap e flotte smart: così nasce ...
Apple affronta un dilemma con il MacBook...
ECOVACS X11 OMNICYCLONE: 19.500 Pa, moci...
ll nuovo HONOR 600 Lite 5G arriva in Ita...
Kindle, addio allo store sui vecchi e-re...
DJI Flip Combo Fly More a 599€ invece di...
Addio cavi e adattatori multipli: Techly...
MOVA M50 Ultra: scopa elettrica con brac...
Amazon taglia i prezzi su GPU, CPU, alim...
Snapdragon 8 Elite Gen 6 Pro: migliorame...
Mythos di Anthropic trasforma il 72% del...
Nel 2027 potrebbe arrivare un Galaxy S27...
Corsair RM 2025, 4 alimentatori in offer...
Poche novità per iPhone 18 e Air 2: ecco...
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: 10:04.


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