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

Πως μπορώ να δημιουργήσω πίνακα στην Sql με τυχαίους αριθμούς ?


mihosmihos

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

Καλησπέρα παιδιά, έχω αναλάβει την πτυχιακή μου πρόσφατα και έχω κολλήσει σε ένα σημείο. Θα πρέπει μέσα στην βάση μου να δημιουργήσω 3ς πίνακες διαστάσεων 10(στήλες)χ100(γραμμές) με τυχαίους αριθμούς. Γνωρίζεται αυτό πως μπορεί να γίνει ? Αντίστοιχα αυτό το έχω κάνει στο excel αλλά αυτό πρέπει να γίνει με Sql.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλησπέρα παιδιά, έχω αναλάβει την πτυχιακή μου πρόσφατα και έχω κολλήσει σε ένα σημείο. Θα πρέπει μέσα στην βάση μου να δημιουργήσω 3ς πίνακες διαστάσεων 10(στήλες)χ100(γραμμές) με τυχαίους αριθμούς. Γνωρίζεται αυτό πως μπορεί να γίνει ? Αντίστοιχα αυτό το έχω κάνει στο excel αλλά αυτό πρέπει να γίνει με Sql.

 

Δεν μας λες σε τί είδους sql αναφέρεσαι.

 

π.χ.

 

http://stackoverflow.com/questions/11042546/how-do-i-populate-a-mysql-table-with-many-random-numbers

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλησπέρα !

 

Στο μήνυμα σου δεν διευκρινίζεται ποια ακριβώς υλοποίηαη της SQL χρησιμοποιείς. Επειδή η πιο γνωστή ελεύθερη υλοποίηση της συγκεκριμένης γλώσσας είναι η MySQL, και επειδή αυτή τη στιγμή την έχω διαθέσιμη, θα χρησιμοποιήσω αυτήν για ν' απαντήσω.

Στη MySQL για να κάνεις τη δουλειά που θέλεις έχουμε μια συνάρτηση που λέγεται RAND. Η πιο συχνή χρήση της RAND είναι να την τρέχουμε χωρίς καθόλου ορίσματα.

Όταν το κάνουμε αυτό, παράγει έναν τυχαίο αριθμό μεταξύ των τιμών 0 και 1. Συνήθως δηλαδή είναι ένας δεκαδικός σιδηρόδρομος με πολλά ψηφία της μορφής 0,15654566776.

Συχνά όμως αυτό δεν μας κάνει, γιατί τυχαίνει να μας ζητάνε να παράγουμε έναν (ακέραιο) τυχαίο αριθμό μεταξύ δύο τιμών έστω m και n. Δηλαδή έναν αριθμό που να ανήκει στο κλειστό διάστημα [m,n].

Τότε χρησιμοποιούμε συνδυαστικά τις συναρτήσεις RAND και FLOOR. Η FLOOR δέχεται ένα δεκαδικό όρισμα και το στρογγυλοποιεί στο μικρότερο ακέραιο. Δηλαδή άμα την τρέξεις με θετικό όρισμα, είναι σαν να "κόβει" απλά το δεκαδικό μέρος.

Για να παράγουμε τον τυχαίο ακέραιο που θέλουμε, μπορούμε να κάνουμε το εξής :

 

FLOOR(RAND() * (n - m + 1)) + m

 

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

 

   while c < max_row do

    insert into pinakas (val) values (FLOOR(RAND() * (n - m + 1)) + m);

    set c=c+1;

    end while ;

commit;

 

Χριστός Ανέστη, Χρόνια Πολλά με υγεία !

Νιάαααου !

Ο Άσπρος Γάτος

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 2 εβδομάδες αργότερα...

Δεν μας λες σε τί είδους sql αναφέρεσαι.

 

π.χ.

 

http://stackoverflow.com/questions/11042546/how-do-i-populate-a-mysql-table-with-many-random-numbers

Σε MySQL .

 

Καλησπέρα !

 

Στο μήνυμα σου δεν διευκρινίζεται ποια ακριβώς υλοποίηαη της SQL χρησιμοποιείς. Επειδή η πιο γνωστή ελεύθερη υλοποίηση της συγκεκριμένης γλώσσας είναι η MySQL, και επειδή αυτή τη στιγμή την έχω διαθέσιμη, θα χρησιμοποιήσω αυτήν για ν' απαντήσω.

Στη MySQL για να κάνεις τη δουλειά που θέλεις έχουμε μια συνάρτηση που λέγεται RAND. Η πιο συχνή χρήση της RAND είναι να την τρέχουμε χωρίς καθόλου ορίσματα.

Όταν το κάνουμε αυτό, παράγει έναν τυχαίο αριθμό μεταξύ των τιμών 0 και 1. Συνήθως δηλαδή είναι ένας δεκαδικός σιδηρόδρομος με πολλά ψηφία της μορφής 0,15654566776.

Συχνά όμως αυτό δεν μας κάνει, γιατί τυχαίνει να μας ζητάνε να παράγουμε έναν (ακέραιο) τυχαίο αριθμό μεταξύ δύο τιμών έστω m και n. Δηλαδή έναν αριθμό που να ανήκει στο κλειστό διάστημα [m,n].

Τότε χρησιμοποιούμε συνδυαστικά τις συναρτήσεις RAND και FLOOR. Η FLOOR δέχεται ένα δεκαδικό όρισμα και το στρογγυλοποιεί στο μικρότερο ακέραιο. Δηλαδή άμα την τρέξεις με θετικό όρισμα, είναι σαν να "κόβει" απλά το δεκαδικό μέρος.

Για να παράγουμε τον τυχαίο ακέραιο που θέλουμε, μπορούμε να κάνουμε το εξής :

 

FLOOR(RAND() * (n - m + 1)) + m

 

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

 

   while c < max_row do

    insert into pinakas (val) values (FLOOR(RAND() * (n - m + 1)) + m);

    set c=c+1;

    end while ;

commit;

 

Χριστός Ανέστη, Χρόνια Πολλά με υγεία !

Νιάαααου !

Ο Άσπρος Γάτος

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

 

postgresql:

select floor(random()* (high-low + 1) + low) from generate_series(1,100);

Αυτό μπορώ να το εκτελέσω αφού δημιουργήσω πίνακα ?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

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

Σύνδεση

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

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