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

Κλήρωση- Επιλογή αριθμού από λίστα


el02154

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

Δημοσ.

Χαίρετε,

 

ένας πελάτης μου θέλει να κάνει μία κλήρωση για έναν διαγωνισμό και μου ζήτησε να φτιάξω μια μικροεφαρμογή όπου θα φαίνετε στο σαιτ η επιλογή ενός αριθμού από μί αασυνεχής λίστα αριθμών (π.χ. 4,7,10,105). Ξέρει κανείς πως μπορώ να το κάνω αυτό; Σκέφτηκα με την rand() της πηπ να επιλέγω ποιος είναι ο αριθμός αλλά δεν δουλεύει με ασυνεχή λίστα. Επίσης ξέρετε πως μπορώ την ώρα μέχρι να επιλεγεί ένας αριθμός να πέζει ένα swf π.χ. που θα λέει περιμένετε.

 

Ευχαριστώ.

Δημοσ.

Εγώ θα έφτιαχνα ένα δικό μου αλγόριθμο και θα τον συσχέτιζα με κάποιο απροσδιόριστο παράγοντα, πχ την ένδειξη από το ρολόι του συστήματος όπου εκτελείται. Η αναμονή ούτως ή άλλως είναι ψέυτικη (εφέ), αφού οι αλγόριθμοι τυχαιότητας εκτελούνται άμεσα.

Δημοσ.

Σε 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... ;)

Δημοσ.

Σε 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]]; //και το εμφανίζεις.

?>

 

και τα δυο θα σου δώσουν το ίδιο αποτέλεσμα.

Διαλέγεις και παίρνεις.

Δημοσ.

@kostasxx: Ωωω! Αυτό δεν το γνώριζα! Kudos! Όσο και να τριφτείς με την PHP, πάντα κάτι θα σου ξεφεύγει! :) :) :)

 

Αυτό είναι αλήθεια... Όσο και να νομίζεις ότι έχεις βρει κάτι που σε βολεύει, στο τέλος μαθαίνεις πως υπάρχει και κάτι ακόμα καλύτερο.

Δημοσ.

Ο 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();
?>

Δημοσ.

Επειδή πρόκειται για κλήρωση διαγωνισμού, θα μπορούσες επίσης να χρησιμοποιήσεις το REST API του random.org και να το αναφέρεις κιόλας ότι η κλήρωση γίνεται με τυχαίο αριθμό από αυτό το site...

Δημοσ.

Όταν το έτοιμο δε σε καλύπτει κι επειδή μπορείς.

Και για ποιο λόγο να φτιάξεις κάτι δικό σου και να χάσεις Χ χρόνο όταν αυτό που θέλεις υπάρχει έτοιμο;

Δημοσ.
Και για ποιο λόγο να φτιάξεις κάτι δικό σου και να χάσεις Χ χρόνο όταν αυτό που θέλεις υπάρχει έτοιμο;
(δις)

 

για να αναπτύξει τις δημιουργικές του ικανότητες! (δις)

 

καλημέρα

 

.

Δημοσ.

φιλοσοφική απάντηση:

 

 

Είναι δημιουργία όταν κάνεις κατι που ήδη υπάρχει? :P

είναι κατανάλωση όταν χρησιμοποιείς κάτι έτοιμο ;

 

τί κερδίζεις όταν παίζεις σκάκι ;

τί κερδίζεις όταν κάνεις ποστ ;

 

 

απλά χρησιμοποιείς με διαφορετικό τρόπο τις ικανότητές σου

και "επιβεβαιώνεις", πιθανόν, "μέρος" της "δημιουργικότητάς" σου

 

καλές γιορτές!

"εριστικέ τύπε" ! :mrgreen:

ελπίζω να μη μου τα χώνεις σε κάθε ποστ! :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:

 

 

 

 

.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...