Οι τυχαίοι αριθμοί μπορούν να παραχθούν χρησιμοποιώντας τις συναρτήσεις random(), uniform(), randange() και randint() στην ενότητα random της τυπικής βιβλιοθήκης της Python.
Η ενότητα random περιλαμβάνεται στην τυπική βιβλιοθήκη, οπότε δεν απαιτείται επιπλέον εγκατάσταση. Φυσικά, πρέπει να την εισάγετε.
Οι ακόλουθες πληροφορίες παρέχονται εδώ.
random.random()
(Αριθμός κινητής υποδιαστολής μεταξύ 0,0 και 1,0)random.uniform()
(Οποιοδήποτε εύρος αριθμών κινητής υποδιαστολής)- Δημιουργήστε τυχαίους αριθμούς που ακολουθούν κανονική κατανομή, κατανομή Gauss κ.λπ.
random.randrange()
(Ακέραιος αυθαίρετου εύρους και βήματος)random.randint()
(Ένας ακέραιος αριθμός σε οποιοδήποτε εύρος)- Δημιουργία μιας λίστας με τυχαίους αριθμούς ως στοιχεία
- Λίστα τυχαίων αριθμών κινητής υποδιαστολής
- Κατάλογος ακέραιων τυχαίων αριθμών
- Αρχικοποίηση της γεννήτριας τυχαίων αριθμών (καθορισμός του σπόρου τυχαίων αριθμών)
Ανατρέξτε στο ακόλουθο άρθρο σχετικά με τον τρόπο τυχαίας εξαγωγής ή ταξινόμησης των στοιχείων μιας λίστας.
- Σχετικά άρθρα:Επιλογή τυχαίων στοιχείων από μια λίστα στην Python χρησιμοποιώντας τις επιλογές choice(), sample(), choices()
- random.random() (Αριθμός κινητής υποδιαστολής μεταξύ 0,0 και 1,0)
- random.uniform() (Οποιοδήποτε εύρος αριθμών κινητής υποδιαστολής)
- Δημιουργήστε τυχαίους αριθμούς που ακολουθούν κανονική κατανομή, κατανομή Gauss κ.λπ.
- random.randrange() (Ακέραιος αυθαίρετου εύρους και βήματος)
- random.randint() (Ένας ακέραιος αριθμός σε οποιοδήποτε εύρος)
- Δημιουργία μιας λίστας με τυχαίους αριθμούς ως στοιχεία
- Αρχικοποίηση της γεννήτριας τυχαίων αριθμών (καθορισμός του σπόρου τυχαίων αριθμών)
random.random() (Αριθμός κινητής υποδιαστολής μεταξύ 0,0 και 1,0)
Η συνάρτηση random() της μονάδας random παράγει έναν τυχαίο αριθμό κινητής υποδιαστολής τύπου float που κυμαίνεται μεταξύ 0,0 και 1,0.
import random
print(random.random())
# 0.4496839011176701
random.uniform() (Οποιοδήποτε εύρος αριθμών κινητής υποδιαστολής)
uniform(a, b)
Οι συναρτήσεις αυτής της τυχαίας ενότητας παράγουν τυχαίους αριθμούς κινητής υποδιαστολής τύπου float σε οποιαδήποτε από τις ακόλουθες περιοχές
a <= n <= b
b <= n <= a
import random
print(random.uniform(100, 200))
# 175.26585048238275
Τα δύο ορίσματα μπορούν να είναι είτε μεγαλύτερα είτε μικρότερα- αν είναι ίσα, θα επιστρέψουν φυσικά μόνο αυτή την τιμή. Η τιμή επιστροφής είναι πάντα μια float.
print(random.uniform(100, -100))
# -27.82338731501028
print(random.uniform(100, 100))
# 100.0
Το όρισμα μπορεί επίσης να καθοριστεί ως float.
print(random.uniform(1.234, 5.637))
# 2.606743596829249
Το αν η τιμή του b περιλαμβάνεται στο εύρος εξαρτάται από την ακόλουθη στρογγυλοποίηση, όπως τεκμηριώνεται.a + (b-a) * random.random()
Το αν η τιμή του τελικού σημείου b είναι εντός του εύρους ή όχι εξαρτάται από τη στρογγυλοποίηση κινητής υποδιαστολής στην ακόλουθη εξίσωση
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation
Δημιουργήστε τυχαίους αριθμούς που ακολουθούν κανονική κατανομή, κατανομή Gauss κ.λπ.
Οι παραπάνω συναρτήσεις random() και uniform() παράγουν ομοιόμορφα κατανεμημένους τυχαίους αριθμούς, αλλά υπάρχουν επίσης συναρτήσεις για την παραγωγή αριθμών κινητής υποδιαστολής που ακολουθούν την ακόλουθη κατανομή.
- κατανομή βήτα:
random.betavariate()
- εκθετική κατανομή:
random.expovariate()
- κατανομή γάμμα:
random.gammavariate()
- Γκαουσιανή κατανομή:
random.gauss()
- λογαριθμοκανονική κατανομή:
random.lognormvariate()
- κανονική κατανομή:
random.normalvariate()
- Κατανομή Von Mises:
random.vonmisesvariate()
- Κατανομή Pareto:
random.paretovariate()
- Κατανομή Weibull:
random.weibullvariate()
Οι παράμετροι κάθε κατανομής καθορίζονται με ορίσματα. Ανατρέξτε στην επίσημη τεκμηρίωση για λεπτομέρειες.
random.randrange() (Ακέραιος αυθαίρετου εύρους και βήματος)
randrange(start, stop, step)
Η συνάρτηση αυτής της τυχαίας ενότητας επιστρέφει ένα τυχαία επιλεγμένο στοιχείο από τα ακόλουθα στοιχεία.range(start, stop, step)
Όπως και στην range(), τα ορίσματα start και step μπορούν να παραλειφθούν. Εάν παραλειφθούν, start=0 και step=1.
import random
print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.randrange(10))
# 5
Το όρισμα step μπορεί να οριστεί για τη δημιουργία ενός ζυγού ή περιττού τυχαίου ακέραιου αριθμού ή ενός τυχαίου ακέραιου αριθμού που είναι πολλαπλάσιο του τρία.
Για παράδειγμα, εάν η αρχή είναι ζυγός και το βήμα=2, μόνο ζυγοί ακέραιοι αριθμοί στο εύρος μπορούν να ληφθούν τυχαία.
print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]
print(random.randrange(10, 20, 2))
# 18
random.randint() (Ένας ακέραιος αριθμός σε οποιοδήποτε εύρος)
randint(a, b)
Η συνάρτηση αυτής της τυχαίας ενότητας επιστρέφει τον ακόλουθο τυχαίο ακέραιο int.a <= n <= b
randrange(a, b + 1)
Ισοδύναμο με αυτό- σημειώστε ότι η τιμή του b περιλαμβάνεται επίσης στο εύρος.
print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74
Δημιουργία μιας λίστας με τυχαίους αριθμούς ως στοιχεία
Σε αυτή την ενότητα, θα εξηγήσουμε πώς να χρησιμοποιήσετε την ενότητα random της τυπικής βιβλιοθήκης για να δημιουργήσετε μια λίστα με τυχαίους αριθμούς ως στοιχεία.
Λίστα τυχαίων αριθμών με κινητές μονάδες κινητής υποδιαστολής
Για να δημιουργήσετε μια λίστα της οποίας τα στοιχεία είναι τυχαίοι αριθμοί κινητής υποδιαστολής, συνδυάστε τις συναρτήσεις random() και uniform() με συμβολισμό κατανόησης λίστας.
import random
print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]
Στο παραπάνω παράδειγμα χρησιμοποιείται η range(), αλλά είναι επίσης δυνατές οι λίστες και οι πλειάδες για τον επιθυμητό αριθμό στοιχείων. Για περισσότερες λεπτομέρειες σχετικά με την κατανόηση λιστών, ανατρέξτε στο ακόλουθο άρθρο.
- Σχετικά άρθρα:Χρήση του συμβολισμού κατανόησης λίστας της Python
Λίστα ακέραιων τυχαίων αριθμών int
Κατά τη δημιουργία μιας λίστας της οποίας τα στοιχεία είναι ακέραιοι τυχαίοι αριθμοί, ο συνδυασμός των παραπάνω randange() και randint() με τον συμβολισμό κατανόησης λίστας μπορεί να οδηγήσει σε διπλές τιμές.
print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]
Αν θέλετε να δημιουργήσετε μια τυχαία ακολουθία ακεραίων αριθμών χωρίς επανάληψη, εξάγετε τα στοιχεία της range() με ένα αυθαίρετο εύρος χρησιμοποιώντας την random.sample().
print(random.sample(range(10), k=5))
# [6, 4, 3, 7, 5]
print(random.sample(range(100, 200, 10), k=5))
# [130, 190, 140, 150, 170]
Για περισσότερες πληροφορίες σχετικά με την random.sample(), ανατρέξτε στο ακόλουθο άρθρο.
- Σχετικά άρθρα:Επιλογή τυχαίων στοιχείων από μια λίστα στην Python χρησιμοποιώντας τις επιλογές choice(), sample(), choices()
Αρχικοποίηση της γεννήτριας τυχαίων αριθμών (καθορισμός του σπόρου τυχαίων αριθμών)
Δίνοντας έναν αυθαίρετο ακέραιο αριθμό στη συνάρτηση seed() της random module, μπορεί να καθοριστεί ο σπόρος τυχαίων αριθμών και να αρχικοποιηθεί η γεννήτρια τυχαίων αριθμών.
Μετά την αρχικοποίηση με τον ίδιο σπόρο, η τυχαία τιμή παράγεται πάντα με τον ίδιο τρόπο.
random.seed(0)
print(random.random())
# 0.8444218515250481
print(random.random())
# 0.7579544029403025
random.seed(0)
print(random.random())
# 0.8444218515250481
print(random.random())
# 0.7579544029403025