Risolvere un problema probabilistico

2

Quindi sono interessato a Computational Investing e ho trovato questo problema su una pagina wiki :

Write a program to discover the answer to this puzzle:"Let's say men and women are paid equally (from the same uniform distribution). If women date randomly and marry the first man with a higher salary, what fraction of the population will get married?"

Non ho molta conoscenza della teoria delle probabilità, quindi non sono sicuro di come implementarlo nel codice.

Il mio pensiero:

  1. Compilare due array (femmina, maschio) con valori di stipendio casuali da un'uniforme distribuzione.
  2. Accoppia casualmente un elemento matrice femmina e uno maschile e vedi se     la condizione di salario più alto è soddisfatta.
  3. Se lo è, incrementa un contatore.
  4. Dividi contatore per popolazione e ottieni la percentuale.

Questa è la logica corretta? La donna esce continuamente fino a quando non ci sono più maschi con salari più alti delle donne?

    
posta Quaxton Hale 24.08.2014 - 20:27
fonte

1 risposta

3

My thinking:

  1. Populate two arrays(female,male) with random salary values from a uniform distribution.
  2. Randomly pair one female and one male array element and see if condition of higher salary is met.
  3. If it is, increment a counter.
  4. Divide counter by population and get percentage.

Is this the correct logic? Do woman continually date until there is no males left with higher salaries than women?

Ci sono diverse cose che non vanno come sopra.

  1. Il tuo algoritmo ha uomini e donne che continuano ad uscire dopo essere stati sposati. È meglio ignorare il problema dell'infedeltà. Devi rimuovere una coppia dalla piscina una volta sposati.

  2. Stai solo eseguendo i passaggi 2 e 3 una volta. La coppia scelta casualmente soddisferà la condizione o non lo farà, il che significa che la tua risposta sarà al 100% o allo 0% e mai nulla nel mezzo.

Hai bisogno di un qualche tipo di loop e qualche tipo di condizione di arresto per quel loop.

Per prima cosa: questa è una domanda politicamente scorretta. Degrada le donne implicando che si sposano solo per soldi. Tuttavia, degrada ancora di più gli uomini! Per questa domanda, la soglia di un maschio è "ha un polso?"

Ci sono modi per riformulare questa domanda che evita il problema di non correttezza politica. Ad esempio, lascia set X e Y set della stessa cardinalità. Ogni set comprende membri con due attributi, value , che viene ricavato da U (0,1) e paired , che inizialmente è false . Secondo alcuni schemi, accoppiamo i membri del set X e impostiamo Y in modo che per ogni coppia (x,y) , abbiamo x.paired == y.paired == false prima dell'accoppiamento e x.value > y.value'. After pairing x and y , the abbinato attributes of members x and y are set to vera'.

La frazione della popolazione che può essere accoppiata dipende molto dall'algoritmo usato per abbinare gli elementi degli insiemi X e Y . Questa non è una domanda ben formulata.

Corrispondenza seriale seriale

Assegna valori casuali all'attributo value di ciascun membro dell'insieme X e pf set Y. Cammina sopra membri y y di set Y . Per ogni membro del genere y , calpestare i membri x del set X fino a quando viene trovato un membro che soddisfa !x.paired && (x.value > y.value) . Questo membro x viene quindi associato al membro y .

La percentuale della popolazione abbinata a questo algoritmo è circa del 97%.

Corrispondenza casuale-seriale

Assegna valori casuali all'attributo value di ciascun membro dell'insieme X e pf set Y. Per ogni membro abbinabile del set Y (un membro y di set Y il cui valore è maggiore del valore massimo di tutti i membri non accoppiati del set X non sono "parabole"), ripetutamente seleziona casualmente un membro di x dei membri spaiati del set X fino a x.value > y.value . Questo membro x viene quindi associato al membro y .

La percentuale della popolazione abbinata a questo algoritmo è circa del 68%.

Corrispondenza casuale-seriale

Questo è in un certo senso l'inverso dell'algoritmo di cui sopra. Qui selezioniamo ripetutamente un membro casuale y dai membri non abbinati del set Y . Quindi passiamo sopra gli elementi del set X , in ordine, finché non viene trovata una corrispondenza. Camminare oltre la fine dice che y è una di battuta è imperdonabile. L'algoritmo si arresta quando il valore minimo del set Y è maggiore del valore massimo del set X .

La percentuale della popolazione abbinata a questo algoritmo è circa del 68%, come sopra.

Corrispondenza casuale casuale

Seleziona casualmente un membro y dai membri non abbinati del set Y e seleziona casualmente un membro x dai membri non abbinati del set X . Accoppia questi due membri se x.value > y.value . Continua a farlo finché non rimangono membri accoppiabili nel set.

La percentuale della popolazione abbinata a questo algoritmo è circa del 68%, come sopra.

Speed dating Speed matching

Fondamentalmente, questo è l'algoritmo di cui sopra ma in parallelo. Qui accoppiamo casualmente membri dei membri spaiati del set Y con membri non abbinati del set X . Tutti questi che soddisfano il criterio x.value > y.value sono accoppiati, in massa.

La percentuale della popolazione abbinata a questo algoritmo è circa del 68%, come sopra. Le prestazioni di questo algoritmo sono tutt'altro che simili. Questo algoritmo è incredibilmente veloce.

matching match.com matching ottimale

Qui proviamo a far corrispondere i membri del set X e impostiamo Y che ha appena superato i criteri. Fare questo in serie batte appena l'algoritmo seriale seriale. Fatelo in parallelo e quasi ogni membro viene abbinato a un altro. Gli unici che non vengono abbinati sono i membri del set Y che sono completamente non accoppiabili.

    
risposta data 24.08.2014 - 21:06
fonte

Leggi altre domande sui tag