Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα σε όλους.
 
Θα το πω με ένα παράδειγμα για να γίνω κατανοητός. Έστω ότι είμαστε 25 άτομα. Το κάθε άτομο έχει έναν αριθμό, κάποιοι μικρότερο κάποιοι μεγαλύτερο κτλπ.

πχ

 

array (size=25)

0 => float 0
1 => float 174809
2 => float 349617
3 => float 524426
4 => float 699235
5 => float 833941
6 => float 874043
7 => float 903178
8 => float 920397
9 => float 995453
10 => float 1048852
11 => float 1077987
12 => float 1183558
13 => float 1223661
14 => float 1252796
15 => float 1270014
16 => float 1281930
17 => float 1292972
18 => float 1323996
19 => float 1345071
20 => float 1427604
21 => float 1456739
22 => float 1466163
23 => float 1473958
24 => float 2884343

 

 

Θέλω να φτιάξω κάτι σαν ρουλλέτα. Δηλαδή να παίρνω έναν random αριθμό (από κάπου και κάπως) και να διαλέγω κάποιο από αυτά τα άτομα αναλόγως του τυχαίου αριθμού. Αυτός που έχει μεγαλύτερο βαθμό, πρέπει να έχει περισσότερες πιθανότητες να επιλεχθεί, από ότι οι υπόλοιποι με μικρότερο αριθμό. Σαν να τους έβαζες σε μια ρουλλέτα δηλαδή, αλλά όσο μεγαλύτερος ο αριθμός που έχει το άτομο, τόσα περισσότερα "κουτάκια" στην ρουλλέτα έχει, οπότε έχει και περισσότερες πιθανότητες να τον διαλέξεις.

 

Η ρουλλέτα θα γυρίσει 25 φορές και λογικό είναι να επιλεχθεί 2 κ 3 κ 4 ή και περισσότερες φορές, αυτός που έχει μεγαλύτερο βαθμό, δεν μας πειράζει δηλαδή να ξανα επιλεχθεί.

 

Έχετε καμιά ιδέα? Σε php γλώσσα. Ευχαριστώ.

Δημοσ.

Είναι πρόβλημα rejection sampling και ουσιαστικά κοιτάς το να βάλεις κάπου τα βάρη συσχετίζοντας τα μαι τους παίχτες και μετά να τα χρησιμοποιήσεις δίνοντας προτεραιότητα στους κοντινότερους παίχτες με το μεγαλύτερο βάρος, αλλά πρέπει να σκεφτείς μερικές περίπτωσης που δεν αναφέρεις, σαν άμα είναι δυνατόν η ρουλέτα να μην βρει κανέναν. (Τότε πότε είναι το αποτέλεσμα μακριά αρκετά από κάθε αριθμώ ΚΑΙ βάρος) Επίσης υπάρχει όριο στα βάρη; Μπορεί κάποιος να έχει 120% περίπτωσης να βγει και ο άλλος 200%; Ή υπαρχή ένα όριο μεταξύ 0 και 100;

Δημοσ.

Είναι πρόβλημα rejection sampling και ουσιαστικά κοιτάς το να βάλεις κάπου τα βάρη συσχετίζοντας τα μαι τους παίχτες και μετά να τα χρησιμοποιήσεις δίνοντας προτεραιότητα στους κοντινότερους παίχτες με το μεγαλύτερο βάρος, αλλά πρέπει να σκεφτείς μερικές περίπτωσης που δεν αναφέρεις, σαν άμα είναι δυνατόν η ρουλέτα να μην βρει κανέναν. (Τότε πότε είναι το αποτέλεσμα μακριά αρκετά από κάθε αριθμώ ΚΑΙ βάρος) Επίσης υπάρχει όριο στα βάρη; Μπορεί κάποιος να έχει 120% περίπτωσης να βγει και ο άλλος 200%; Ή υπαρχή ένα όριο μεταξύ 0 και 100;

 

Έκανα μια σκέψη για να λύσω αυτό το πρόβλημα που και εσύ αναφέρεις και είναι η εξής.

 

Αν ας πούμε υπάρχουν 3 άτομα αντί για 25 που είπα επάνω. Ο 1ος έχει αριθμό 5, ο 2ος 25 και ο 3ος 40.

Αν φτιάξω πεδίο τιμών για τον καθέναν με περισσότερα κουτιά στον 3ο? Δηλαδή τα πεδία θα είναι 3.

 

0-4 -> 5 "κουτιά"

5-29 -> 25 κουτιά

30-69 -> 40 κουτιά.

 

Και ψάξω έναν τυχαίο από το 0 έως το 69. Σίγουρα θα πετύχω κάποιον και με περισσότερες πιθανότητες αυτόν με τα 40 κουτιά.

 

Σωστό δεν είναι?

  • Like 1
Δημοσ.

Αν εχεις π.χ 5 νουμερα

1 => 10

2 => 20

3 => 35

4 => 50

5 => 70

 

ειναι 10+20+35+50+70=185 

 

 

Παίρνεις ενα random απο 0 μεχρι 185 

αν ερθει

[0--10] επιλέγεις το 1

[10--30]  επιλέγεις το 2

[30--65] επιλέγεις το 3

[65--115]  επιλέγεις το 4

[115--185] επιλέγεις το 5

Οι πιθανότητες ειναι αναλογικές των τιμων τους

  • Like 1
Δημοσ.

albNik είπαμε το ίδιο πράμα την ίδια ώρα :) 

 

Έχω μια απορία όμως. Πρέπει οι αριθμοί αυτοί να είναι sorted από τον μικρότερο στον μεγαλύτερο ή μπορώ να τους έχω και διάσπαρτους? Βγαίνει το ίδιο αποτέλεσματα ή όχι?

 

Νομίζω όχι αλλά δεν είμαι και σίγουρος με την θολούρα που έχω...

Δημοσ.

albNik είπαμε το ίδιο πράμα την ίδια ώρα :)

 

Έχω μια απορία όμως. Πρέπει οι αριθμοί αυτοί να είναι sorted από τον μικρότερο στον μεγαλύτερο ή μπορώ να τους έχω και διάσπαρτους? Βγαίνει το ίδιο αποτέλεσματα ή όχι?

 

Νομίζω όχι αλλά δεν είμαι και σίγουρος με την θολούρα που έχω...

Δεν χρειαζεται , σημασια εχει στον καθενα να δινεις διαστημα (απο εως) ίσο με την τιμή του. 

Δημοσ.

Ok σας ευχαριστώ πολύ, θα το προσπαθήσω έτσι.

 

Βέβαια τα έκανα sort πρώτα, δεν ξέρω γιατί αλλά δεν θα είναι πρόβλημα.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...