2011-07-28 83 views
7

làm cách nào để xác định phạm vi thập phân từ 0 đến 1 trong python? Hàm Range() trong python chỉ trả về giá trị int. Tôi có một số biến trong mã của tôi có số thay đổi từ 0 đến 1. Tôi đang bối rối về cách tôi đặt nó trong mã. Cảm ơn bạncách tạo một số các số thập phân ngẫu nhiên giữa 0 và 1

Tôi sẽ thêm nhiều hơn cho câu hỏi của mình. Không có bước hoặc bất kỳ giá trị gia tăng nào có thể tạo ra các giá trị thập phân. Tôi phải sử dụng một biến có thể có giá trị từ 0 đến 1. Nó có thể là bất kỳ giá trị nào. Nhưng chương trình nên biết ranh giới của nó rằng nó có một phạm vi từ 0 đến 1. Tôi hy vọng tôi đã làm cho bản thân mình rõ ràng. Cảm ơn bạn

http://docs.python.org/library/random.html

+1

Bạn phải cụ thể hơn. Từ 0 đến 1 có thể nằm trong khoảng từ 0 đến giá trị vô hạn. Các bước là gì? – Jacob

+0

Cảm ơn nhưng không có bước nào. Nó có thể là bất kỳ giá trị giữa 0 và 1. Tôi chỉ cần có một biến đó sẽ có giá trị giữa 0 và 1. – zingy

+2

@eryksun Có Tôi cần một phạm vi ngẫu nhiên. Tôi nên đặt từ ngẫu nhiên. – zingy

Trả lời

9

Nếu bạn đang tìm kiếm một danh sách các số ngẫu nhiên giữa 0 và 1, tôi nghĩ bạn có thể có một sử dụng tốt các mô-đun random

>>> import random 
>>> [random.random() for _ in range(0, 10)] 
[0.9445162222544106, 0.17063032908425135, 0.20110591438189673, 
0.8392299590767177, 0.2841838551284578, 0.48562600723583027, 
0.15468445000916797, 0.4314435745393854, 0.11913358976315869, 
0.6793348370697525] 
+0

Vâng điều này sẽ làm việc. Cảm ơn – zingy

0

Nó có vẻ như comprehensions danh sách sẽ là khá hữu ích ở đây.

mylist = [x/n for x in range(n)] 

Điều gì đó tương tự? Python của tôi bị gỉ.

+0

Tôi nghĩ rằng điều này sẽ làm việc. Cảm ơn bạn – zingy

+1

Nếu bạn muốn danh sách 0, thì có, nó sẽ hoạt động hoàn hảo. Phân chia số nguyên ftl! – geoffspear

+0

Tôi nghĩ rằng, trong các phiên bản gần đây của Python, điều này thực sự hoạt động tốt. Bạn không phải sử dụng // b để lấy phân số nguyên? Hãy kiểm tra cái này, Wooble. – Patrick87

5
for i in range(100): 
    i /= 100.0 
    print i 

Ngoài ra, hãy xem decimal.

1
def float_range(start, end, increment): 
    int_start = int(start/increment) 
    int_end = int(end/increment) 
    for i in range(int_start, int_end): 
     yield i * increment 
+0

Cảm ơn nhưng không có tăng cụ thể. Nó chỉ là một giá trị ngẫu nhiên giữa 0 và 1. – zingy

0
>>> from decimal import Decimal 
>>> [Decimal(x)/10 for x in xrange(11)] 
[Decimal("0"), Decimal("0.1"), Decimal("0.2"), Decimal("0.3"), Decimal("0.4"), Decimal("0.5"), Decimal("0.6"), Decimal("0.7"), Decimal("0.8"), Decimal("0.9"), Decimal("1")] 

Chỉnh sửa, đưa bình luận cho Mark ngẫu nhiên của câu trả lời:

Nếu bạn thực sự không muốn có một phạm vi trơn tru incrementing, mà đúng hơn là một số ngẫu nhiên giữa 0 và 1, sử dụng random.random().

+0

@ Wooble hhmm Tôi đoán random.random() hoạt động hoàn hảo. Cảm ơn – zingy

0

Điều này sẽ số lượng chữ số thập phân giữa 0-1 với kích thước bước 0.1

import numpy as np 
mylist = np.arange(0, 1, 0.1) 
+0

chức năng hữu ích! nhưng tôi nghĩ rằng các op thay đổi câu hỏi để xác định rằng các mục cần phải được ngẫu nhiên trong khi arange sẽ làm cho một loạt lệnh. – navicore

Các vấn đề liên quan