Tôi bắt đầu học python, tôi đã thử tạo ra các giá trị ngẫu nhiên bằng cách truyền số âm và dương. Giả sử -1
, 1
.Cách tạo giá trị ngẫu nhiên âm trong python
Tôi nên làm điều này bằng python như thế nào?
Tôi bắt đầu học python, tôi đã thử tạo ra các giá trị ngẫu nhiên bằng cách truyền số âm và dương. Giả sử -1
, 1
.Cách tạo giá trị ngẫu nhiên âm trong python
Tôi nên làm điều này bằng python như thế nào?
import random
def r(minimum, maximum):
return minimum + (maximum - minimum) * random.random()
print r(-1, 1)
EDIT: @ San4ez random.uniform(-1, 1)
là cách chính xác. Không cần phải phát minh lại bánh xe ...
Dù sao, random.uniform()
được mã hóa như:
def uniform(self, a, b):
"Get a random number in the range [a, b) or [a, b] depending on rounding."
return a + (b-a) * self.random()
Sử dụng random.uniform(a, b)
>>> import random
>>> random.uniform(-1, 1)
0.4779007751444888
>>> random.uniform(-1, 1)
-0.10028581710574902
Hầu hết các ngôn ngữ có một hàm sẽ trả về một số ngẫu nhiên trong khoảng [0 , 1], sau đó bạn có thể thao tác để sắp xếp phạm vi mà bạn cần. Trong python, hàm là random.random
. Vì vậy, đối với phạm vi của bạn của [-1, 1], bạn có thể làm điều này:
import random
random_number = random.random() * 2 - 1
Bằng cách tăng gấp đôi số chúng ta có được một loạt các [0, 2], và bằng cách trừ đi một từ nó, chúng tôi nhận [- 1, 1].
nếu bạn muốn integer in a specified range:
print random.randrange(-1, 2)
nó sử dụng quy ước giống như range
, vì vậy giới hạn trên không được bao gồm.
random.uniform
làm điều gì đó tương tự nếu bạn cần nổi giá trị, nhưng nó not always clear nếu giới hạn trên được bao gồm hoặc không
Bạn cũng có thể làm điều gì đó như thế này
import random
random.choice([-1, 1])
'def rand(): trả lại 4 # Được tạo bởi cuộn xúc xắc công bằng. Đảm bảo là ngẫu nhiên.' –
Cảm ơn rất nhiều.Nhưng tôi không thể làm theo cách này.Tại đây tôi muốn chuyển giá trị làm đối số trong khi chạy tập lệnh. #!/usr/bin/env python nhập sys, ngẫu nhiên r = sys.argv [1] y = sys.argv [2] in random.range (y, r) – user1393251
@ user1393251 - bạn có thể làm theo cách này (phương thức 'r' của tôi được gọi giống như cách' random.uniform' chính xác), chỉ là tôi đang phát minh lại bánh xe ở đây… Lấy câu trả lời của San4ez. – eumiro