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

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


mihosmihos

Ερώτηση

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

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

4 απαντήσεις σε αυτή την ερώτηση

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

  • 0

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

 

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

 

π.χ.

 

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

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Καλησπέρα !

 

Στο μήνυμα σου δεν διευκρινίζεται ποια ακριβώς υλοποίηαη της 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;

 

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

Νιάαααου !

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

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Δεν μας λες σε τί είδους 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);

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

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

Εγγραφείτε για έναν νέο λογαριασμό

Σύνδεση

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

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

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.