My thinking:
- Populate two arrays(female,male) with random salary values from a uniform
distribution.
- Randomly pair one female and one male array element and see if
condition of higher salary is met.
- If it is, increment a counter.
- 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.
-
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.
-
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.