generating random unique numbers

Giorgos Keramidas keramida at ceid.upatras.gr
Mon Oct 26 04:34:18 EET 2009


On Mon, 26 Oct 2009 02:17:29 +0200, Christos Bacharakis <cmpahar at gmail.com> wrote:
> Θέλω να δημιουργήσω 7 τυχαίους αριθμούς οι οποίοι θα έχουν τιμές από 1 έως
> 7. Ο λόγος που θέλω να το κάνω αυτό είναι για να αλλάζει σε κάθε εκτέλεση η
> σειρά των αριθμών.

On Mon, 26 Oct 2009 04:23:35 +0200, Giorgos Keramidas <keramida at ceid.upatras.gr> wrote:
> Τότε εκτός από μια γεννήτρια χρειάζεται και έλεγχο αν το αποτέλεσμα που
> πήρες το έχεις ξαναδεί.  Αν είναι λίγοι αριθμοί (π.χ. κάτω από μερικές
> δεκάδες), μπορείς απλά να τους κρατάς σε ένα array, π.χ.:

Κι όπως πάντα, με λίγο πιο προσεκτικό διάβασμα μπορεί να φανεί ότι είναι
πιο απλό αυτό που ήθελες.  Αυτό που θέλεις, από ότι κατάλαβα είναι ένα
τυχαίο permutation των αριθμών 1-7 ή 0-6.

Ένας εύκολος τρόπος να γίνει αυτό είναι:

      Για κάθε δείκτη j από 1 έως και 7:
          Διάλεξε ένα τυχαίο δείκτη k από 1 έως 7:
              Κάνε εναλλαγή των στοιχείων [j] και [k]

Αυτό έχει σίγουρα καλύτερο χρόνο από το προηγούμενο που έγραψα για
οσοδήποτε μικρό ή μεγάλο πλήθος από αριθμούς :-)



More information about the Linux-greek-users mailing list