el02154 Δημοσ. 15 Δεκεμβρίου 2010 Δημοσ. 15 Δεκεμβρίου 2010 Χαίρετε, ένας πελάτης μου θέλει να κάνει μία κλήρωση για έναν διαγωνισμό και μου ζήτησε να φτιάξω μια μικροεφαρμογή όπου θα φαίνετε στο σαιτ η επιλογή ενός αριθμού από μί αασυνεχής λίστα αριθμών (π.χ. 4,7,10,105). Ξέρει κανείς πως μπορώ να το κάνω αυτό; Σκέφτηκα με την rand() της πηπ να επιλέγω ποιος είναι ο αριθμός αλλά δεν δουλεύει με ασυνεχή λίστα. Επίσης ξέρετε πως μπορώ την ώρα μέχρι να επιλεγεί ένας αριθμός να πέζει ένα swf π.χ. που θα λέει περιμένετε. Ευχαριστώ.
PCharon Δημοσ. 15 Δεκεμβρίου 2010 Δημοσ. 15 Δεκεμβρίου 2010 Εγώ θα έφτιαχνα ένα δικό μου αλγόριθμο και θα τον συσχέτιζα με κάποιο απροσδιόριστο παράγοντα, πχ την ένδειξη από το ρολόι του συστήματος όπου εκτελείται. Η αναμονή ούτως ή άλλως είναι ψέυτικη (εφέ), αφού οι αλγόριθμοι τυχαιότητας εκτελούνται άμεσα.
thanocaster Δημοσ. 15 Δεκεμβρίου 2010 Δημοσ. 15 Δεκεμβρίου 2010 Σε php: > <?php $numbers = array(4,7,10,105); $key = rand(1, count($numbers)); echo $numbers[$key-1]; ?> Σε αυτόν τον κώδικα, δημιουργείς το array, παίρνεις έναν τυχαίο αριθμό από το 1 έως το πλήθως των τιμών στο array, και στη συνέχεια, βρίσκεις το στοιχείο με index τον παραπάνω αριθμό μείον ένα. Αυτό το -1 υπάρχει γιατί στα array, τα index ξεκινάνε από το 0...
kostasxx Δημοσ. 15 Δεκεμβρίου 2010 Δημοσ. 15 Δεκεμβρίου 2010 Σε php: > <?php $numbers = array(4,7,10,105); $key = rand(1, count($numbers)); echo $numbers[$key-1]; ?> Σε αυτόν τον κώδικα, δημιουργείς το array, παίρνεις έναν τυχαίο αριθμό από το 1 έως το πλήθως των τιμών στο array, και στη συνέχεια, βρίσκεις το στοιχείο με index τον παραπάνω αριθμό μείον ένα. Αυτό το -1 υπάρχει γιατί στα array, τα index ξεκινάνε από το 0... Αυτό είναι σωστό, αλλά μπορείς να χρησιμοποιησεις και κατευθείαν τη συνάρτηση array_rand() <?php $numbers = array(4,7,10,105); $random_key = array_rand($numbers, 1); //Διαλέγεις 1 τυχαίο στοιχείο του πίνακα. echo $numbers[$random_key[0]]; //και το εμφανίζεις. ?> και τα δυο θα σου δώσουν το ίδιο αποτέλεσμα. Διαλέγεις και παίρνεις.
thanocaster Δημοσ. 15 Δεκεμβρίου 2010 Δημοσ. 15 Δεκεμβρίου 2010 @kostasxx: Ωωω! Αυτό δεν το γνώριζα! Kudos! Όσο και να τριφτείς με την PHP, πάντα κάτι θα σου ξεφεύγει! :)
kostasxx Δημοσ. 15 Δεκεμβρίου 2010 Δημοσ. 15 Δεκεμβρίου 2010 @kostasxx: Ωωω! Αυτό δεν το γνώριζα! Kudos! Όσο και να τριφτείς με την PHP, πάντα κάτι θα σου ξεφεύγει! :) Αυτό είναι αλήθεια... Όσο και να νομίζεις ότι έχεις βρει κάτι που σε βολεύει, στο τέλος μαθαίνεις πως υπάρχει και κάτι ακόμα καλύτερο.
el02154 Δημοσ. 15 Δεκεμβρίου 2010 Μέλος Δημοσ. 15 Δεκεμβρίου 2010 Ευχαριστώ παιδιά για τις απαντήσεις σας. Αυτό το ψευδοεφέ με τον timer μπορώ κάπως να το κάνω;
thanocaster Δημοσ. 15 Δεκεμβρίου 2010 Δημοσ. 15 Δεκεμβρίου 2010 Ο PCharon αναφέρεται σε δημιουργία συνάρτησης αντί για χρήση της rand(). Μπορείς να κάνεις κάτι τέτοιο: > <?php function random_number(){ $numbers = array(4,7,10,105); // Πλήθος στοιχείων στο array $n = count($numbers); // Αποθήκευση της τρέχουσας ώρας σε μικροσεκόντ, πολλαπλασιασμένα επί 10 // (για να είναι μονοψήφιος το ακέραιο μέρος $t = microtime()*10; // Διαιρείς τον αριθμό των δευτερολέπτων με το πλήθος των στοιχείων, και // παίρνεις το υπόλοιπο της διαίρεσης, στρογγυλοποιημένο (στο συγκεκριμένο παράδειγμα θα είναι // ένας αριθμός μεταξύ 0 και 3) $i = round(fmod($t, $n)); // Τελικά, χρησιμοποιείς το υπόλοιπο της παραπάνω διαίρεσης σαν δείκτη για το array print $numbers[$i]; } random_number(); ?>
Uberalles_gr Δημοσ. 16 Δεκεμβρίου 2010 Δημοσ. 16 Δεκεμβρίου 2010 Και για ποιο λόγο να φτιάξεις κάτι δικό σου και να χάσεις Χ χρόνο όταν αυτό που θέλεις υπάρχει έτοιμο;
PCharon Δημοσ. 16 Δεκεμβρίου 2010 Δημοσ. 16 Δεκεμβρίου 2010 Όταν το έτοιμο δε σε καλύπτει κι επειδή μπορείς.
parsifal Δημοσ. 16 Δεκεμβρίου 2010 Δημοσ. 16 Δεκεμβρίου 2010 Επειδή πρόκειται για κλήρωση διαγωνισμού, θα μπορούσες επίσης να χρησιμοποιήσεις το REST API του random.org και να το αναφέρεις κιόλας ότι η κλήρωση γίνεται με τυχαίο αριθμό από αυτό το site...
Uberalles_gr Δημοσ. 17 Δεκεμβρίου 2010 Δημοσ. 17 Δεκεμβρίου 2010 Όταν το έτοιμο δε σε καλύπτει κι επειδή μπορείς. Και για ποιο λόγο να φτιάξεις κάτι δικό σου και να χάσεις Χ χρόνο όταν αυτό που θέλεις υπάρχει έτοιμο;
gtroza Δημοσ. 17 Δεκεμβρίου 2010 Δημοσ. 17 Δεκεμβρίου 2010 Και για ποιο λόγο να φτιάξεις κάτι δικό σου και να χάσεις Χ χρόνο όταν αυτό που θέλεις υπάρχει έτοιμο; (δις) για να αναπτύξει τις δημιουργικές του ικανότητες! (δις) καλημέρα .
orotoi Δημοσ. 17 Δεκεμβρίου 2010 Δημοσ. 17 Δεκεμβρίου 2010 φιλοσοφικό ερώτημα: Είναι δημιουργία όταν κάνεις κατι που ήδη υπάρχει?
gtroza Δημοσ. 17 Δεκεμβρίου 2010 Δημοσ. 17 Δεκεμβρίου 2010 φιλοσοφική απάντηση: Είναι δημιουργία όταν κάνεις κατι που ήδη υπάρχει? είναι κατανάλωση όταν χρησιμοποιείς κάτι έτοιμο ; τί κερδίζεις όταν παίζεις σκάκι ; τί κερδίζεις όταν κάνεις ποστ ; απλά χρησιμοποιείς με διαφορετικό τρόπο τις ικανότητές σου και "επιβεβαιώνεις", πιθανόν, "μέρος" της "δημιουργικότητάς" σου καλές γιορτές! "εριστικέ τύπε" ! ελπίζω να μη μου τα χώνεις σε κάθε ποστ! :mrgreen: :mrgreen: .
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.