Python3
|
Output:
0.41941790721207284
Another way to write the same code.
Shuffle Elements Randomly
The
random.shuffle()
method randomly reorders the elements in a list.
numbers=[12,23,45,67,65,43] random.shuffle(numbers) print(numbers) random.shuffle(numbers) print(numbers)
Learn more about the random module in Python docs.
Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Random trong Python: Tạo số random ngẫu nhiên
Trong bài này mình sẽ hướng dẫn bạn cách tạo số ngẫu nhiên bằng cách sử dụng module random trong Python. Với module này bạn có thể tạo ra một số ngẫu nhiên bất kì dựa với nhiều yêu cầu khác nhau.
Random number generator (RNG) là một số được tạo ra ngẫu nhiên từ máy tính, và thường có hai loại khác nhau:
- Số được tạo ra từ phần cứng, cách này thường sẽ không giải được.
- Số được tạo ra nhờ một thuật toán nào đó, cách này giải được nếu bạn biết thuật toán.
Trong thực tế thì số ngẫu nhiên thường được sử dụng trong những chương trình trao giải thưởng ngẫu nhiên.
Ví dụ bạn có 100 đơn hàng và muốn tặng quà cho 100 khách hàng đó. Lúc này bạn sẽ tạo ra một con số ngẫu nhiên từ 1 -> 100, ai may mắn thì sẽ trúng giải.
Bài viết này được đăng tại [free tuts .net]
Nói lan man vậy đủ rồi, bây giờ mình sẽ hướng dẫn các bạn cách sử dụng module random trong Python nhé.
Real-valued distributions¶
The following functions generate specific real-valued distributions. Function parameters are named after the corresponding variables in the distribution’s equation, as used in common mathematical practice; most of these equations can be found in any statistics text.
- random.random()¶
-
Return the next random floating point number in the range
0.0 <= X < 1.0
- random.uniform(a, b)¶
-
Return a random floating point number N such that
a <= N <= b
for
a <= b
and
b <= N <= a
for
b < a
.The end-point value
may or may not be included in the range depending on floating-point rounding in the equation
a + (b-a) * random()
.
- random.triangular(low, high, mode)¶
-
Return a random floating point number N such that
low <= N <= high
and with the specified mode between those bounds. The low and high bounds default to zero and one. The mode argument defaults to the midpoint between the bounds, giving a symmetric distribution.
- random.betavariate(alpha, beta)¶
-
Beta distribution. Conditions on the parameters are
alpha > 0
and
beta > 0
. Returned values range between 0 and 1.
- random.expovariate(lambd=1.0)¶
-
Exponential distribution. lambd is 1.0 divided by the desired mean. It should be nonzero. (The parameter would be called “lambda”, but that is a reserved word in Python.) Returned values range from 0 to positive infinity if lambd is positive, and from negative infinity to 0 if lambd is negative.
Changed in version 3.12: Added the default value for
lambd
.
- random.gammavariate(alpha, beta)¶
-
Gamma distribution. (Not the gamma function!) The shape and scale parameters, alpha and beta, must have positive values. (Calling conventions vary and some sources define ‘beta’ as the inverse of the scale).
The probability distribution function is:
x ** (alpha – 1) * math.exp(-x / beta) pdf(x) = ————————————– math.gamma(alpha) * beta ** alpha
- random.gauss(mu=0.0, sigma=1.0)¶
-
Normal distribution, also called the Gaussian distribution. mu is the mean, and sigma is the standard deviation. This is slightly faster than the
normalvariate()
function defined below.Multithreading note: When two threads call this function simultaneously, it is possible that they will receive the same return value. This can be avoided in three ways. 1) Have each thread use a different instance of the random number generator. 2) Put locks around all calls. 3) Use the slower, but thread-safe
normalvariate()
function instead.Changed in version 3.11: mu and sigma now have default arguments.
- random.lognormvariate(mu, sigma)¶
-
Log normal distribution. If you take the natural logarithm of this distribution, you’ll get a normal distribution with mean mu and standard deviation sigma. mu can have any value, and sigma must be greater than zero.
- random.normalvariate(mu=0.0, sigma=1.0)¶
-
Normal distribution. mu is the mean, and sigma is the standard deviation.
Changed in version 3.11: mu and sigma now have default arguments.
- random.vonmisesvariate(mu, kappa)¶
-
mu is the mean angle, expressed in radians between 0 and 2*pi, and kappa is the concentration parameter, which must be greater than or equal to zero. If kappa is equal to zero, this distribution reduces to a uniform random angle over the range 0 to 2*pi.
- random.paretovariate(alpha)¶
-
Pareto distribution. alpha is the shape parameter.
- random.weibullvariate(alpha, beta)¶
-
Weibull distribution. alpha is the scale parameter and beta is the shape parameter.
Hàm seed() của module random Python
Nếu bạn muốn khởi tạo trình tạo số random ngẫu nhiên thì kết hợp thêm hàm seed. Tham số truyền vào là một số nguyên, và Python sẽ áp dụng số này vào thuật toán sinh số của nó.
import random random.seed(100) print (“So ngau nhien voi seed 100 : “, random.random()) # Cung tao ra so ngau nhien nhu nhau random.seed(100) print (“So ngau nhien voi seed 100 : “, random.random()) # Cung tao ra so ngau nhien nhu nhau random.seed(100) print (“So ngau nhien voi seed 100 : “, random.random())
Chạy chương trình này lên thì dù bạn đang sử dụng máy tính nào đi nữa thì kết quả sẽ là:
Seed 50 : 0.1456692551041303 Seed 50 : 0.1456692551041303 Seed 50 : 0.1456692551041303
Lý do là ta đã thiết lập trình tạo số ngẫu nhiên cho nó là số 50, vì vậy dù ở máy tính nào thì Python cũng sử dụng con số 50 này vào thuật toán sinh số random.
Nếu bạn không thiết lập thì mặc định nó sẽ lấy thời gian của hệ thống, vì vậy mỗi lần ta chạy thì sẽ cho một số khác nhau.
Alternative Generator¶
- class random.Random([seed])¶
-
Class that implements the default pseudo-random number generator used by the
random
module.Changed in version 3.11: Formerly the seed could be any hashable object. Now it is limited to:
None
,
int
,
float
,
str
,
bytes
, or
bytearray
.Subclasses of
Random
should override the following methods if they wish to make use of a different basic generator:- seed(a=None, version=2)¶
-
Override this method in subclasses to customise the
seed()
behaviour of
Random
instances.
- getstate()¶
-
Override this method in subclasses to customise the
getstate()
behaviour of
Random
instances.
- setstate(state)¶
-
Override this method in subclasses to customise the
setstate()
behaviour of
Random
instances.
- random()¶
-
Override this method in subclasses to customise the
random()
behaviour of
Random
instances.
Optionally, a custom generator subclass can also supply the following method:
- getrandbits(k)¶
-
Override this method in subclasses to customise the
getrandbits()
behaviour of
Random
instances.
- class random.SystemRandom([seed])¶
-
Class that uses the
os.urandom()
function for generating random numbers from sources provided by the operating system. Not available on all systems. Does not rely on software state, and sequences are not reproducible. Accordingly, the
seed()
method has no effect and is ignored. The
getstate()
and
setstate()
methods raise
NotImplementedError
if called.
Python3
|
Randomly Select Elements from a List in Python
Random sampling from a list in Python (random.choice, and sample)
Example 1: Python random.choice() function is used to return a random item from a list, tuple, or string.
The code uses the
random.choice()
function from the
random
module to randomly select elements from different data types. It demonstrates selecting a random element from a list, a string, and a tuple. The chosen elements will vary each time you run the code, making it useful for random selection from various data structures.
Pseudo Random Number Generators
Sự thật là, việc thường xuyên tạo ra những con số phải thực sự ngẫu nhiên là không cần thiết. Trong nhiều trường hợp, tất cả những gì chúng ta cần là các bộ số “có vẻ ngẫu nhiên”. Loại dữ liệu này có thể được lấy từ các bộ tạo số giả ngẫu nhiên. Đây là các thuật toán, sử dụng một phần nhỏ thông tin (được gọi là seed) và sau đó áp dụng các công thức toán học phức tạp để tạo ra các bộ số xác định giống như các bộ thực sự ngẫu nhiên. Seed có thể là một giá trị được lấy từ một trình tạo số ngẫu nhiên thực sự hoặc một nguồn khác, như đồng hồ của hệ thống hoặc thời gian hiện tại.
Chạy bộ tạo số nhiều lần bằng cùng một seed sẽ dẫn đến cùng một output mỗi lần chạy. Các số kết quả hầu như không thể phân biệt được với các số có nguồn gốc từ các bộ tạo số ngẫu nhiên thực, mặc dù thực tế có một số quy tắc ẩn trong sự phân phối của chúng. Tuy nhiên, đối với nhiều ứng dụng, loại giả ngẫu nhiên xác định này là hoàn toàn đủ.
Discrete distributions¶
The following function generates a discrete distribution.
- random.binomialvariate(n=1, p=0.5)¶
-
Binomial distribution. Return the number of successes for n independent trials with the probability of success in each trial being p:
Mathematically equivalent to:
sum(random() < p for i in range(n))
The number of trials n should be a non-negative integer. The probability of success p should be between
0.0 <= p <= 1.0
. The result is an integer in the range
0 <= X <= n
.New in version 3.12.
List of all the functions Python Random Module
There are different random functions in the Random Module of Python. Look at the table below to learn more about these functions:
seed() | Initialize the random number generator |
getstate() | Returns an object with the current internal state of the random number generator |
setstate() | Used to restore the state of the random number generator back to the specified state |
getrandbits() | Return an integer with a specified number of bits |
randrange() | Returns a random number within the range |
randint() | Returns a random integer within the range |
choice() | Returns a random item from a list, tuple, or string |
choices() | Returns multiple random elements from the list with replacement |
sample() | Returns a particular length list of items chosen from the sequence |
random() | Generate random floating numbers |
uniform() | Return a random floating number between two numbers both inclusive |
triangular() | Return a random floating point number within a range with a bias towards one extreme |
betavariate() | Return a random floating point number with beta distribution |
expovariate() | Return a random floating point number with exponential distribution |
gammavariate() | Return a random floating point number with a gamma distribution |
gauss() | Return a random floating point number with Gaussian distribution |
lognormvariate() | Return a random floating point number with a log-normal distribution |
normalvariate() | Return a random floating point number with normal distribution |
vonmisesvariate() | Return a random floating point number with von Mises distribution or circular normal distribution |
paretovariate() | Return a random floating point number with a Pareto distribution |
weibullvariate() | Return a random floating point number with Weibull distribution |
Python3
|
[4, 2, 3]
[4, 7, 8]
[‘6’, ‘4’, ‘8’]
Python Random Module
Python has a built-in module that you can use to make random numbers.
The
random
module has a set of methods:
Method | Description |
seed() | Initialize the random number generator |
getstate() | Returns the current internal state of the random number generator |
setstate() | Restores the internal state of the random number generator |
getrandbits() | Returns a number representing the random bits |
randrange() | Returns a random number between the given range |
randint() | Returns a random number between the given range |
choice() | Returns a random element from the given sequence |
choices() | Returns a list with a random selection from the given sequence |
shuffle() | Takes a sequence and returns the sequence in a random order |
sample() | Returns a given sample of a sequence |
random() | Returns a random float number between 0 and 1 |
uniform() | Returns a random float number between two given parameters |
triangular() | Returns a random float number between two given parameters, you can also set a mode parameter to specify the midpoint between the two other parameters |
betavariate() | Returns a random float number between 0 and 1 based on the Beta distribution (used in statistics) |
expovariate() | Returns a random float number based on the Exponential distribution (used in statistics) |
gammavariate() | Returns a random float number based on the Gamma distribution (used in statistics) |
gauss() | Returns a random float number based on the Gaussian distribution (used in probability theories) |
lognormvariate() | Returns a random float number based on a log-normal distribution (used in probability theories) |
normalvariate() | Returns a random float number based on the normal distribution (used in probability theories) |
vonmisesvariate() | Returns a random float number based on the von Mises distribution (used in directional statistics) |
paretovariate() | Returns a random float number based on the Pareto distribution (used in probability theories) |
weibullvariate() | Returns a random float number based on the Weibull distribution (used in statistics) |
random — Generate pseudo-random numbers¶
Source code: Lib/random.py
This module implements pseudo-random number generators for various distributions.
For integers, there is uniform selection from a range. For sequences, there is uniform selection of a random element, a function to generate a random permutation of a list in-place, and a function for random sampling without replacement.
On the real line, there are functions to compute uniform, normal (Gaussian), lognormal, negative exponential, gamma, and beta distributions. For generating distributions of angles, the von Mises distribution is available.
Almost all module functions depend on the basic function
random()
, which
generates a random float uniformly in the half-open range
0.0 <= X < 1.0
.
Python uses the Mersenne Twister as the core generator. It produces 53-bit precision
floats and has a period of 2**19937-1. The underlying implementation in C is
both fast and threadsafe. The Mersenne Twister is one of the most extensively
tested random number generators in existence. However, being completely
deterministic, it is not suitable for all purposes, and is completely unsuitable
for cryptographic purposes.
The functions supplied by this module are actually bound methods of a hidden
instance of the
random.Random
class. You can instantiate your own
instances of
Random
to get generators that don’t share state.
Class
Random
can also be subclassed if you want to use a different
basic generator of your own devising: see the documentation on that class for
more details.
The
random
module also provides the
SystemRandom
class which
uses the system function
os.urandom()
to generate random numbers
from sources provided by the operating system.
Warning
The pseudo-random generators of this module should not be used for
security purposes. For security or cryptographic uses, see the
secrets
module.
See also
M. Matsumoto and T. Nishimura, “Mersenne Twister: A 623-dimensionally equidistributed uniform pseudorandom number generator”, ACM Transactions on Modeling and Computer Simulation Vol. 8, No. 1, January pp.3–30 1998.
Complementary-Multiply-with-Carry recipe for a compatible alternative random number generator with a long period and comparatively simple update operations.
Hàm random() trong Python
Để tạo ra một số ngẫu nhiên trong phạm vi từ 0 -> 1 thì bạn sử dụng hàm random.
import random print(random.random()) print(random.random()) print(random.random())
Kết quả:
0.3556402123776601 0.45276186924063544 0.8091260518016232
Lưu ý là kết quả này sẽ là random cho mỗi lần chạy nên khi chạy trên máy của bạn thì số sẽ khác.
Python3
|
0.6229016948897019
0.7417869892607294
Generate Random Numbers in Python
random.randint() method is used to generate random integers between the given range.
Syntax: randint(start, end)
Example: Creating random integers
This code uses the ‘
random'
module to generate random integers within specific ranges. It first generates a random integer between 5 and 15 (inclusive) and then between -10 and -2 (inclusive). The generated integers are printed with appropriate formatting.
Functions for integers¶
- random.randrange(stop)¶
- random.randrange(start, stop[, step])
-
Return a randomly selected element from
range(start, stop, step)
.This is roughly equivalent to
choice(range(start, stop, step))
but supports arbitrarily large ranges and is optimized for common cases.The positional argument pattern matches the
range()
function.Keyword arguments should not be used because they can be interpreted in unexpected ways. For example
randrange(start=100)
is interpreted as
randrange(0, 100, 1)
.Changed in version 3.2:
randrange()
is more sophisticated about producing equally distributed values. Formerly it used a style like
int(random()*n)
which could produce slightly uneven distributions.Changed in version 3.12: Automatic conversion of non-integer types is no longer supported. Calls such as
randrange(10.0)
and
randrange(Fraction(10, 1))
now raise a
TypeError
.
- random.randint(a, b)¶
-
Return a random integer N such that
a <= N <= b
. Alias for
randrange(a, b+1)
.
- random.getrandbits(k)¶
-
Returns a non-negative Python integer with k random bits. This method is supplied with the Mersenne Twister generator and some other generators may also provide it as an optional part of the API. When available,
getrandbits()
enables
randrange()
to handle arbitrarily large ranges.Changed in version 3.9: This method now accepts zero for k.
Recipes¶
These recipes show how to efficiently make random selections
from the combinatoric iterators in the
itertools
module:
def random_product(*args, repeat=1): “Random selection from itertools.product(*args, **kwds)” pools = [tuple(pool) for pool in args] * repeat return tuple(map(random.choice, pools)) def random_permutation(iterable, r=None): “Random selection from itertools.permutations(iterable, r)” pool = tuple(iterable) r = len(pool) if r is None else r return tuple(random.sample(pool, r)) def random_combination(iterable, r): “Random selection from itertools.combinations(iterable, r)” pool = tuple(iterable) n = len(pool) indices = sorted(random.sample(range(n), r)) return tuple(pool[i] for i in indices) def random_combination_with_replacement(iterable, r): “Choose r elements with replacement. Order the result to match the iterable.” # Result will be in set(itertools.combinations_with_replacement(iterable, r)). pool = tuple(iterable) n = len(pool) indices = sorted(random.choices(range(n), k=r)) return tuple(pool[i] for i in indices)
The default
random()
returns multiples of 2⁻⁵³ in the range
0.0 ≤ x < 1.0. All such numbers are evenly spaced and are exactly
representable as Python floats. However, many other representable
floats in that interval are not possible selections. For example,
0.05954861408025609
isn’t an integer multiple of 2⁻⁵³.
The following recipe takes a different approach. All floats in the interval are possible selections. The mantissa comes from a uniform distribution of integers in the range 2⁵² ≤ mantissa < 2⁵³. The exponent comes from a geometric distribution where exponents smaller than -53 occur half as often as the next larger exponent.
from random import Random from math import ldexp class FullRandom(Random): def random(self): mantissa = 0x10_0000_0000_0000 | self.getrandbits(52) exponent = -53 x = 0 while not x: x = self.getrandbits(32) exponent += x.bit_length() – 32 return ldexp(mantissa, exponent)
All real valued distributions in the class will use the new method:
>>> fr = FullRandom() >>> fr.random() 0.05954861408025609 >>> fr.expovariate(0.25) 8.87925541791544
The recipe is conceptually equivalent to an algorithm that chooses from
all the multiples of 2⁻¹⁰⁷⁴ in the range 0.0 ≤ x < 1.0. All such
numbers are evenly spaced, but most have to be rounded down to the
nearest representable Python float. (The value 2⁻¹⁰⁷⁴ is the smallest
positive unnormalized float and is equal to
math.ulp(0.0)
.)
See also
Generating Pseudo-random Floating-Point Values a
paper by Allen B. Downey describing ways to generate more
fine-grained floats than normally generated by
random()
.
Python Random module generates random numbers in Python. These are pseudo-random numbers means they are not truly random.
This module can be used to perform random actions such as generating random numbers, printing random a value for a list or string, etc. It is an in-built function in Python.
Module Random trong Python
Python cung cấp sẵn một module cực kỳ dễ sử dụng để xử lý với các số ngẫu nhiên. Module này gọi là
random
, được cài đặt một bộ tạo số giả ngẫu nhiên và chứa các hàm cho phép chúng ta giải quyết trực tiếp nhiều vấn đề lập trình khác nhau sử dụng đến tính ngẫu nhiên.
Module
random
dựa trên Marsenne Twister – một thuật toán rất phổ biến, là trình tạo số giả ngẫu nhiên mặc định không chỉ cho Python, mà còn cho nhiều hệ thống phần mềm phổ biến khác như Microsoft Excel, MATLAB, R hay PHP. Ưu điểm nổi bật của nó là việc được cấp phép chứng nhận, tính ngẫu nhiên được xác nhận bởi nhiều thử nghiệm thống kê và tốc độ tương đối cao so với các PRNG khác.
Hàm random()
Phương thức quan trọng nhất của module
random
là phương thức
random()
. Hầu hết các chức năng khác phụ thuộc vào nó. Phương thức
random()
tạo ra một số thực float ngẫu nhiên trong phạm vi (0.0, 1.0).
>>> import random >>> random.random() 0.8474337369372327
Hàm seed()
Nếu chúng ta không đặt một seed cho bộ tạo số giả ngẫu nhiên, thì seed mặc định là thời gian hệ thống hiện tại. Tuy nhiên, chúng ta có thể đặt giá trị chính xác của seed một cách thủ công, việc này sẽ rất hữu ích nếu chúng ta muốn sao chép kết quả giả ngẫu nhiên trong tương lai. Với mục đích như vậy, chúng ta có thể sử dụng phương thức
random.seed()
>>> random.seed(5) >>> random.random() 0.6229016948897019 >>> random.random() 0.7417869892607294 >>> random.random() 0.7951935655656966 >>> random.seed(5) >>> random.random() 0.6229016948897019
Phương thức
random.seed()
sẽ ảnh hưởng đến tất cả các phương thức của module
random
mà chúng ta sử dụng sau khi gọi nó. Trong đoạn code ví dụ ở trên, ta đặt seed là và sau đó gọi hàm
random.random()
nhiều lần. Điều quan trọng cần lưu ý ở đây là seed do người dùng định nghĩa sẽ chỉ được sử dụng lần đầu tiên khi có một phương thức
random
khác được thực thi – sau đó, các seed cho các phương thức sau sẽ thay đổi bằng cách sử dụng các giá trị ngẫu nhiên được tạo ra trước đó.
Điều này cho phép Python đưa ra được giá trị ngẫu nhiên mới mỗi lần. Tuy nhiên, sau khi thiết lập lại seed bằng phương thức
random.seed()
, chúng ta sẽ có thể sao chép chính xác chuỗi số giả ngẫu nhiên bất cứ lúc nào. Điều này rất hữu ích cho những việc như chạy thử nghiệm. Nếu bạn đưa ra cùng một seed mỗi khi bạn chạy một thử nghiệm có sử dụng một trong các phương pháp
random
thì bạn vẫn có thể biết đầu ra sẽ là gì cho các thử nghiệm này.
Một vài ví dụ cụ thể của module Random
Hàm randint()
>>> random.randint(1,10) 4
Phương thức
random.randint()
lấy hai đối số thể hiện phạm vi mà phương thức rút ra một số nguyên ngẫu nhiên. Ở ví dụ trên là số nguyên được chọn ngẫu nhiên từ 1 đến 9.
Hàm randrange()
>>> random.randrange(2,10,2) 2 >>> random.randrange(2,10,2) 4 >>> random.randrange(2,10,2) 8 >>> random.randrange(2,10,2) 6
Trong đoạn code trên, phương thức
random.randrange()
tương tự như
random.randint()
nhưng nó cũng cho phép chúng ta xác định đối số thứ ba, là bước nhảy trong phạm vi được xác định. Ở ví dụ này, ta chỉ yêu cầu đưa ra các số chẵn trong phạm vi từ 2 đến 9.
Hàm choice()
>>> cards = ['ace_spades','10_hearts','3_diamonds','king_hearts'] >>> random.choice(cards) '10_hearts'
Trong đoạn code này, phương thức
random.choice()
chọn một phần tử ngẫu nhiên thuộc danh sách.
Hàm shuffle()
>>> cards = ['ace_spades','10_hearts','3_diamonds','king_hearts'] >>> random.shuffle(cards) >>> print(cards) ['king_hearts', '3_diamonds', 'ace_spades', '10_hearts']
Trong đoạn code trên, phương thức
random.shuffle()
xáo trộn một danh sách các phần tử. Điều quan trọng cần lưu ý ở đây là nó xáo trộn chính ở trong danh sách đó. Có nghĩa là phương thức này trả về
None
và thực sự sửa đổi biến
cards
của chúng ta.
Bookkeeping functions¶
- random.seed(a=None, version=2)¶
-
Initialize the random number generator.
If a is omitted or
None
, the current system time is used. If randomness sources are provided by the operating system, they are used instead of the system time (see the
os.urandom()
function for details on availability).If a is an int, it is used directly.
With version 2 (the default), a
str
,
bytes
, or
bytearray
object gets converted to an
int
and all of its bits are used.With version 1 (provided for reproducing random sequences from older versions of Python), the algorithm for
str
and
bytes
generates a narrower range of seeds.Changed in version 3.2: Moved to the version 2 scheme which uses all of the bits in a string seed.
- random.getstate()¶
-
Return an object capturing the current internal state of the generator. This object can be passed to
setstate()
to restore the state.
- random.setstate(state)¶
-
state should have been obtained from a previous call to
getstate()
, and
setstate()
restores the internal state of the generator to what it was at the time
getstate()
was called.
Nguồn tham khảo
All rights reserved
Module random trong Python chứa các hàm tạo số nguyên ngẫu nhiên, tạo ra số float giữa 0,0 và 1,0.
Có nhiều loại hàm khác nhau được sử dụng trong một Module random như sau:
Hàm random.random()
Hàm này tạo ra một số float ngẫu nhiên trong khoảng từ 0,0 đến 1,0.
Hàm random.randint()
Hàm này trả về một số nguyên ngẫu nhiên giữa các số nguyên được chỉ định.
Hàm random.randrange()
Hàm này trả về một phần tử được chọn ngẫu nhiên từ phạm vi được tạo bởi các đối số start, stop, và step. Giá trị bắt đầu là 0 theo mặc định.
Hàm random.choice()
Hàm này trả về một phần tử được chọn ngẫu nhiên từ một chuỗi không trống.
Hàm random.shuffle()
Hàm này sắp xếp lại ngẫu nhiên các thành phần trong danh sách.
Python – Random Module
The
random
module is a built-in module to generate the pseudo-random variables. It can be used perform some action randomly such as to get a random number, selecting a random elements from a list, shuffle elements randomly, etc.
Random Module in Python Examples
Let’s discuss some common operations performed by Random module in Python.
Example 1: Printing a random value from a list in Python.
This code uses the
random
module to select a random element from the list
list1
using the
random.choice()
function. It prints a random element from the list, demonstrating how to pick a random item from a sequence in Python.
Generate Random Numbers within Range
The
random.randrange()
method returns a randomly selected element from the range created by the start, stop and step arguments.
The value of start is 0 by default. Similarly, the value of step is 1 by default.
import random print(random.randrange(1, 10)) print(random.randrange(1, 10, 2)) print(random.randrange(0, 101, 10))
True Random Number Generators
Các bộ tạo số ngẫu nhiên thực là các phương pháp trích rút tính ngẫu nhiên hoặc không thể tiên đoán từ các khía cạnh không thể đoán trước được của các tiến trình vật lý. Các phương thức này không trực tiếp tạo ra các số, mà là các trạng thái, sau đó có thể được diễn dịch sang dạng số – đây là lý do tại sao chúng thường được gọi là các trình tạo sự kiện ngẫu nhiên (Random Event Generators – REGs). Một số trong số chúng, sử dụng các sự kiện vĩ mô phổ biến, như là các phương pháp ném xúc xắc, lật đồng xu hoặc xáo trộn thẻ bài.
Những bộ tạo số ngẫu nhiên thực này thường sử dụng các hiện tượng vật lý phức tạp hơn. Một số trong số chúng, như phân rã phóng xạ, nhiễu nhiệt hoặc nhiễu vô tuyến, được trích xuất sự khó lường từ đặc thù của cơ học lượng tử. Các phương pháp khác sử dụng tính không thể đoán trước được của tiếng ồn trong khí quyển hoặc thậm chí là trạng thái của đèn đối lưu giọt dầu.
Hàm uniform() của module random Python
Nếu randint() tạo ra các số nguyên random thì uniform lại tạo ra số thực random.
import random val = random.uniform(1, 10) print(val) val = random.uniform(1, 10) print(val) val = random.uniform(1, 10) print(val) val = random.uniform(1, 10) print(val)
Kết quả:
6.622458477575256 4.111744021782984 5.637923271375383 2.454251302893746
Python Random random() Syntax
Syntax : random.random()
Parameters : This method does not accept any parameter.
Returns : This method returns a random floating number between 0 and 1.
Python random.random() Method Example
Random in Python generate different number every time you run this program.
Functions for sequences¶
- random.choice(seq)¶
-
Return a random element from the non-empty sequence seq. If seq is empty, raises
IndexError
.
- random.choices(population, weights=None, *, cum_weights=None, k=1)¶
-
Return a k sized list of elements chosen from the population with replacement. If the population is empty, raises
IndexError
.If a weights sequence is specified, selections are made according to the relative weights. Alternatively, if a cum_weights sequence is given, the selections are made according to the cumulative weights (perhaps computed using
itertools.accumulate()
). For example, the relative weights
[10, 5, 30, 5]
are equivalent to the cumulative weights
[10, 15, 45, 50]
. Internally, the relative weights are converted to cumulative weights before making selections, so supplying the cumulative weights saves work.If neither weights nor cum_weights are specified, selections are made with equal probability. If a weights sequence is supplied, it must be the same length as the population sequence. It is a
TypeError
to specify both weights and cum_weights.The weights or cum_weights can use any numeric type that interoperates with the
float
values returned by
random()
(that includes integers, floats, and fractions but excludes decimals). Weights are assumed to be non-negative and finite. A
ValueError
is raised if all weights are zero.For a given seed, the
choices()
function with equal weighting typically produces a different sequence than repeated calls to
choice()
. The algorithm used by
choices()
uses floating point arithmetic for internal consistency and speed. The algorithm used by
choice()
defaults to integer arithmetic with repeated selections to avoid small biases from round-off error.New in version 3.6.
Changed in version 3.9: Raises a
ValueError
if all weights are zero.
- random.shuffle(x)¶
-
Shuffle the sequence x in place.
To shuffle an immutable sequence and return a new shuffled list, use
sample(x, k=len(x))
instead.Note that even for small
len(x)
, the total number of permutations of x can quickly grow larger than the period of most random number generators. This implies that most permutations of a long sequence can never be generated. For example, a sequence of length 2080 is the largest that can fit within the period of the Mersenne Twister random number generator.Changed in version 3.11: Removed the optional parameter random.
- random.sample(population, k, *, counts=None)¶
-
Return a k length list of unique elements chosen from the population sequence. Used for random sampling without replacement.
Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices).
Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample.
Repeated elements can be specified one at a time or with the optional keyword-only counts parameter. For example,
sample(['red', 'blue'], counts=[4, 2], k=5)
is equivalent to
sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5)
.To choose a sample from a range of integers, use a
range()
object as an argument. This is especially fast and space efficient for sampling from a large population:
sample(range(10000000), k=60)
.If the sample size is larger than the population size, a
ValueError
is raised.Changed in version 3.9: Added the counts parameter.
Changed in version 3.11: The population must be a sequence. Automatic conversion of sets to lists is no longer supported.
Python3
|
Output:
0.5714025946899135
0.5714025946899135
Don’t miss your chance to ride the wave of the data revolution! Every industry is scaling new heights by tapping into the power of data. Sharpen your skills and become a part of the hottest trend in the 21st century.
Dive into the future of technology – explore the Complete Machine Learning and Data Science Program by GeeksforGeeks and stay ahead of the curve.
Last Updated :
26 Apr, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment…
The Python Random module is a built-in module for generating random integers in Python. These numbers occur randomly and does not follow any rules or instructuctions. We can therefore use this module to generate random numbers, display a random item for a list or string, and so on. The random.random() function gives a float number that ranges from 0.0 to 1.0. There are no parameters required for this function. This method returns the second random floating-point value within [0.0 and 1] is returned. Code Output:
The random.randint() function generates a random integer from the range of numbers supplied. Code Output:
The random.randrange() function selects an item randomly from the given range defined by the start, the stop, and the step parameters. By default, the start is set to 0. Likewise, the step is set to 1 by default. Code Output:
The random.choice() function selects an item from a non-empty series at random. In the given below program, we have defined a string, list and a set. And using the above choice() method, random element is selected. Code Output:
The random.shuffle() function shuffles the given list randomly. Code Output:
Code Output:
Following is the list of functions available in the random module. To conclude, We learned about various methods that Python’s random module provides us with for dealing with Integers, floating-point numbers, and other sequences like Lists, tuples, etc. We also looked at how the seed affects the pseudo – random number pattern. Next TopicPython statistics module |
Các phương thức của module random trong Python
Đây là một module dùng để tạo ra một số ngẫu nhiên, nó có nhiều phương thức tạo số khác nhau, và tùy vào nhu cầu mà bạn chọn phương thức cho phù hợp.
- seed () Khởi tạo trình tạo số ngẫu nhiên
- getstate () Trả về trạng thái bên trong hiện tại của trình tạo số ngẫu nhiên
- setstate () Khôi phục trạng thái bên trong của trình tạo số ngẫu nhiên
- getrandbits () Trả về một số đại diện cho các bit ngẫu nhiên
- randrange () Trả về một số ngẫu nhiên giữa phạm vi đã cho
- randint () Trả về một số ngẫu nhiên giữa phạm vi đã cho
- choice() Trả về một phần tử ngẫu nhiên từ chuỗi đã cho
- choices() Trả về một danh sách với một lựa chọn ngẫu nhiên từ chuỗi đã cho
- shuffle () Lấy một chuỗi và trả về chuỗi theo thứ tự ngẫu nhiên
- sample () Trả về một mẫu đã cho của một chuỗi
- random () Trả về một số thực ngẫu nhiên từ 0 đến 1
- Uniform () Trả về một số thực ngẫu nhiên giữa hai tham số đã cho
- triangular () Trả về một số thực ngẫu nhiên giữa hai tham số đã cho, bạn cũng có thể đặt một tham số chế độ để chỉ định điểm giữa giữa hai tham số khác
- betavariate () Trả về một số thực ngẫu nhiên từ 0 đến 1 dựa trên phân phối Beta (được sử dụng trong thống kê)
- expovariate () Trả về một số thực ngẫu nhiên dựa trên phân phối lũy thừa (được sử dụng trong thống kê)
- gammavariate () Trả về một số thực ngẫu nhiên dựa trên phân phối Gamma (được sử dụng trong thống kê)
- gauss () Trả về một số thực ngẫu nhiên dựa trên phân phối Gaussian (được sử dụng trong lý thuyết xác suất)
- lognormvariate () Trả về một số thực ngẫu nhiên dựa trên phân phối log-chuẩn (được sử dụng trong lý thuyết xác suất)
- normalvariate () Trả về một số thực ngẫu nhiên dựa trên phân phối chuẩn (được sử dụng trong lý thuyết xác suất)
- vonmisesvariate () Trả về một số thực ngẫu nhiên dựa trên phân phối von Mises (được sử dụng trong thống kê định hướng)
- paretovariate () Trả về một số thực ngẫu nhiên dựa trên phân phối Pareto (được sử dụng trong lý thuyết xác suất)
- weibullvariate () Trả về một số thực ngẫu nhiên dựa trên phân phối Weibull (được sử dụng trong thống kê)
Trong module random của Python có rất nhiều phương thức, vì vậy mình không thể trình bày hết được. Thay vào đó bạn hãy xem một số cách sử dụng đơn giản dưới đây, sau đó tìm thêm ở trang chủ của Python nhé.
There are certain situations that involve games or simulations which work on a non-deterministic approach. In these types of situations, random numbers are extensively used in the following applications:
- Creating pseudo-random numbers on Lottery scratch cards
- reCAPTCHA on login forms uses a random number generator to define different numbers and images
- Picking a number, flipping a coin, and throwing of a dice related games required random numbers
- Shuffling deck of playing cards
In Python, random numbers are not generated implicitly; therefore, it provides a random module in order to generate random numbers explicitly. A random module in Python is used to create random numbers. To generate a random number, we need to import a random module in our program using the command:
import random
Python3
|
Original list :
[1, 2, 3, 4, 5]
After the first shuffle :
[3, 2, 1, 5, 4]
After the second shuffle :
[2, 3, 1, 5, 4]
In this article we discussed about Python Random module, and also saw some examples of functions in random module in Python. Random module in Python is very important and contains very useful functions.
Hope this helps you in using Python Random module functions.
More on Python Modules:
Don’t miss your chance to ride the wave of the data revolution! Every industry is scaling new heights by tapping into the power of data. Sharpen your skills and become a part of the hottest trend in the 21st century.
Dive into the future of technology – explore the Complete Machine Learning and Data Science Program by GeeksforGeeks and stay ahead of the curve.
Last Updated :
20 Dec, 2023
Like Article
Save Article
Share your thoughts in the comments