christodoulos Δημοσ. 1 Δεκεμβρίου 2013 Δημοσ. 1 Δεκεμβρίου 2013 (επεξεργασμένο) πως μπορουμε να φτιαξουμε την rand() ωστε να γεμιζουμε ενα πινακα πχ 100 θεσεων ,με τιμες αναμεσα στο πχ0 και 99 δλδ rand()%99 ,αλλα αυτοι οι αριθμοι να εξυπηρετουν μια συνθηκη...στην προκειμενη να απεχουν ανα 4. και επισης αυτοι οι αριθμοι να μην ειναι ιδιοι...ευχαριστωωω!!! Επεξ/σία 1 Δεκεμβρίου 2013 από christodoulos
ALLisCHAOS Δημοσ. 1 Δεκεμβρίου 2013 Δημοσ. 1 Δεκεμβρίου 2013 οταν λες να απεχουν ανα 4?? δηλ. εννοεις να περνεις σαν αποτελεσμα κατι τετοιο: ? pinakas[0]=0 pinakas[1]=4 pinakas[2]=8 pinakas[3]=12 pinakas[4]=16 klp klp
Star_Light Δημοσ. 1 Δεκεμβρίου 2013 Δημοσ. 1 Δεκεμβρίου 2013 πως μπορουμε να φτιαξουμε την rand() ωστε να γεμιζουμε ενα πινακα πχ 10 θεσεων ,με τιμες αναμεσα στο πχ0 και 99 δλδ rand()%99 ,αλλα αυτοι οι αριθμοι να εξυπηρετουν μια συνθηκη...στην προκειμενη να απεχουν ανα 4. και επισης αυτοι οι αριθμοι να μην ειναι ιδιοι...ευχαριστωωω!!! Όσο η διαφορά απο το αποτέλεσμα που επιστρέφει η rand μεσα στα ορια που την έχεις βάλει με το στοιχειο i-1 του πίνακα δεν ειναι 4 συνέχιζε να καλείς την συνάρτηση μέχρι να πετύχεις αυτο που θές. Στο στοιχειο [0] θα βάλεις μια τιμή μεσω της rand μετά το i θα αυξηθεί σε 1. Αν το [i-1] - rand()%99 != 4 δηλαδη το [0] - rand()%99 != 4 συνέχισε (χωρις να αυξήσεις το i) και ξανακάλεσε την rand. Καπως έτσι το σκέφτομαι εγω τώρα. Μπορει να υπάρχει και καλύτερος τρόπος. Πρεπει να προσέξεις βεβαια μην σου βγει και αρνητικός αριθμός.
ALLisCHAOS Δημοσ. 1 Δεκεμβρίου 2013 Δημοσ. 1 Δεκεμβρίου 2013 αν το θες ετσι οπως καταλαβα εγω...γιατι να μην παρεις στην αρχη εναν τυχαιο αριθμο, να τον βαλεις στην πρωτη θεση κ οι υπολοιπες θα περνουν τον προηγουμενο αριθμο θα τον αυξανουν κατα 4 και θα τον περναν στον πινακα 1
albNik Δημοσ. 1 Δεκεμβρίου 2013 Δημοσ. 1 Δεκεμβρίου 2013 (επεξεργασμένο) Παρε ενα τυχαιο μεταξυ [0,99] π.χ. 75. Το ευρύτερο διαστημα σου θα ειναι [75-9*4 , 75 + 6*4] εχεις 7 "σειρες" που περιεχουν το 75 [75-9*4, 75] [75-8*4, 75 +4] [75-7*4, 75 +2*4] [75-6*4, 75 +3*4] [75-5*4, 75 +4*4] [75-4*4, 75 +5*4] [75-3*4, 75 +6*4] Παρε ενα τυχαιο μεταξυ [1, 7] και κρατα αυτη τη σειρά Επεξ/σία 1 Δεκεμβρίου 2013 από albNik
christodoulos Δημοσ. 1 Δεκεμβρίου 2013 Μέλος Δημοσ. 1 Δεκεμβρίου 2013 (επεξεργασμένο) δεν το εξεφρασα σωστα και ζηταω συγνωμη...ηθελα να πω η διαφορα του πρωτου τυχαιου αριθμου με τον δευτερο να ειναι ΤΟΥΛΑΧΙΣΤΟΝ 4..δηλαδη αν ο πρωτος τυχαιος αριθμος ειναι ο 44 ο επομενος να ειναι απο 48 και πανω η απο 40 και κατω..ευχαριστω πολυ ..θα εξετασω τωρα καποιες απαντησεις σας να δω και εγω πως μπορω να τiς αξιοποιησω! Επεξ/σία 1 Δεκεμβρίου 2013 από christodoulos
albNik Δημοσ. 1 Δεκεμβρίου 2013 Δημοσ. 1 Δεκεμβρίου 2013 Εχεις ενα πινακα 100 θεσεων όλα 0. Κανε rand(), βαλε 1 στη θεση του και -1 στις θεσεις +-1,2,3. Κανε rand() μεχρι να πεσει σε θεση με 0, βαλε 1 εκει, και -1 στις θεσεις +-1,2,3. Κανε rand() μεχρι να πεσει σε θεση με 0, βαλε 1 εκει, και -1 στις θεσεις +-1,2,3. ... Καντο 9 φορες. Οι 10 αριθμοι που ειναι σε θεσεις 1 απεχουν >=4.
rafinos Δημοσ. 1 Δεκεμβρίου 2013 Δημοσ. 1 Δεκεμβρίου 2013 Αυτός ο τρόπος είναι τέρμα χωριάτικο αλλά πρέπει να είναι σωστό... είναι σε php $pin = array(); for($i = 0; $i<=9; $i++){ $x = rand(10,100); if($i > 0){ while($x==$pin[$i-1]) || ($x==($pin[$i-1] + 1)) || ($x==($pin[$i-1] + 2)) || ($x==($pin[$i-1] + 3)) || ($x==($pin[$i-1] + 4)) || ($x==($pin[$i-1] - 1)) || ($x==($pin[$i-1] - 2)) || ($x==($pin[$i-1] -3)) || ($x==($pin[$i-1] - 4)){ $x = rand(10,100); } } $pin[$i] = $x; }
albNik Δημοσ. 1 Δεκεμβρίου 2013 Δημοσ. 1 Δεκεμβρίου 2013 int ar[100]; for(i=0;i<100;i++) ar[i]=0; int r=rand()%100; ar[r]=1; for(i=1;i<3;i++) { if(r+i<100) ar[r+i]=-1; if(r-i>=0) ar[r-i]=-1; } for(k=1;k<=9;k++) { while(ar[r=rand()%100]!=0) ; ar[r]=1; for(i=1;i<3;i++) { if(r+i<100) ar[r+i]=-1; if(r-i>=0) ar[r-i]=-1; } } Απο τον editor του φορουμ το εγραψα ..
defacer Δημοσ. 1 Δεκεμβρίου 2013 Δημοσ. 1 Δεκεμβρίου 2013 @παπί Είναι πολύ επικίνδυνο να περνάς rand() ως συνάρτηση σύγκρισης σε κάποιο sort για το οποίο δεν ξέρεις όλες τις λεπτομέρειες, μπορεί να γίνουν διάφορα περίεργα (π.χ. infinite loop). Αυτό δεν είναι πρόβλημα στην ίδια την quicksort αλλά είναι κακό σαν παράδειγμα και επιπλέον technically δεν ξέρεις αν η qsort κάνει quicksort. Η ενδεδειγμένη προσέγγιση όταν θες να κάνεις κάτι τέτοιο τόσο για πρακτικούς όσο και για διδακτικούς σκοπούς είναι Fisher-Yates. Για το πρόβλημα, νομίζω πως "σωστότερη" λύση είναι η εξής Βάλε ένα τυχαίο αριθμό στην πρώτη θέση. Σε κάθε επόμενη θέση, δες βάσει της προηγούμενης και του επιθυμητού margin πόσες επιλογές είναι ακατάλληλες. Π.χ. με margin 4 και προηγούμενη 40 έχουμε 7 ακατάλληλες, τις [37, 43] ενώ με προηγούμενη 2 έχουμε μόνο 6, τις [0, 5]. Έστω L το κάτω φράγμα του διαστήματος των ακατάλληλων (το 37 και το 0 παραπάνω) και Ν ο αριθμός των στοιχείων του (7 και 6 παραπάνω). Ο επόμενος τυχαίος αριθμός είναι R = rand() % (99 - N), εκτός αν R >= L οπότε επιπλέον R += Ν. Πλεονέκτημα: μαθηματικά βέβαιο πως θα τερματίσει μετά από ακριβώς τόσες επαναλήψεις όσες τυχαίους αριθμούς θέλουμε. 1
christodoulos Δημοσ. 1 Δεκεμβρίου 2013 Μέλος Δημοσ. 1 Δεκεμβρίου 2013 σε ποιον μπορω να στειλω το προγραμμα που εχω φτιαξει ωστε να καταλαβει πρακτικα που χρειαζομαι αυτην την παραμετρο...ευχαριστω πολυ ολους με εχουν βοηθησει αρκετα καποιες ιδεες!
Star_Light Δημοσ. 1 Δεκεμβρίου 2013 Δημοσ. 1 Δεκεμβρίου 2013 σε ποιον μπορω να στειλω το προγραμμα που εχω φτιαξει ωστε να καταλαβει πρακτικα που χρειαζομαι αυτην την παραμετρο...ευχαριστω πολυ ολους με εχουν βοηθησει αρκετα καποιες ιδεες! Βάλτο εδώ. Για να πάρεις και περισσότερες απαντήσεις.
christodoulos Δημοσ. 1 Δεκεμβρίου 2013 Μέλος Δημοσ. 1 Δεκεμβρίου 2013 star_ligth σ εχω στειλει pm και θα καταλαβεις
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα