Hướng dẫn how do you generate a unique random number in a range python? - làm cách nào để bạn tạo một số ngẫu nhiên duy nhất trong một dãy python?

338

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi biết làm thế nào để tạo một số ngẫu nhiên trong một phạm vi trong Python.

random.randint(numLow, numHigh)

Và tôi biết tôi có thể đặt nó vào một vòng lặp để tạo ra n số lượng của các số này

for x in range (0, n):
    listOfNumbers.append(random.randint(numLow, numHigh))

Tuy nhiên, tôi cần đảm bảo mỗi số trong danh sách đó là duy nhất. Khác với một tải các câu lệnh có điều kiện, có cách nào đơn giản để tạo n số số ngẫu nhiên duy nhất không?

Điều quan trọng là mỗi số trong danh sách khác với các số khác ..

Vì thế

[12, 5, 6, 1] = Tốt

Nhưng mà

[12, 5, 5, 1] ​​= xấu, vì số 5 xảy ra hai lần.

Hướng dẫn how do you generate a unique random number in a range python? - làm cách nào để bạn tạo một số ngẫu nhiên duy nhất trong một dãy python?

Hỏi ngày 3 tháng 4 năm 2014 lúc 15:29Apr 3, 2014 at 15:29

Tiêu đề Chris HeadleandchrisChris Headleand

5.70316 Huy hiệu vàng49 Huy hiệu bạc66 Huy hiệu Đồng16 gold badges49 silver badges66 bronze badges

1

Nếu bạn chỉ cần lấy mẫu mà không cần thay thế:

>>> import random
>>> random.sample(range(1, 100), 3)
[77, 52, 45]

Random.Sample có dân số và cỡ mẫu

for x in range (0, n):
    listOfNumbers.append(random.randint(numLow, numHigh))
0 và trả lại
for x in range (0, n):
    listOfNumbers.append(random.randint(numLow, numHigh))
0 Thành viên ngẫu nhiên của dân số.

Nếu bạn phải kiểm soát trường hợp

for x in range (0, n):
    listOfNumbers.append(random.randint(numLow, numHigh))
0 lớn hơn
for x in range (0, n):
    listOfNumbers.append(random.randint(numLow, numHigh))
3, bạn cần phải chuẩn bị để bắt
for x in range (0, n):
    listOfNumbers.append(random.randint(numLow, numHigh))
4:

>>> try:
...   random.sample(range(1, 2), 3)
... except ValueError:
...   print('Sample size exceeded population size.')
... 
Sample size exceeded population size

Đã trả lời ngày 3 tháng 4 năm 2014 lúc 15:34Apr 3, 2014 at 15:34

Hướng dẫn how do you generate a unique random number in a range python? - làm cách nào để bạn tạo một số ngẫu nhiên duy nhất trong một dãy python?

5

Tạo ra phạm vi dữ liệu trước và sau đó xáo trộn nó như thế này

import random
data = list(range(numLow, numHigh))
random.shuffle(data)
print data

Bằng cách thực hiện theo cách này, bạn sẽ nhận được tất cả các số trong phạm vi cụ thể nhưng theo thứ tự ngẫu nhiên.

Nhưng bạn có thể sử dụng

for x in range (0, n):
    listOfNumbers.append(random.randint(numLow, numHigh))
5 để có được số lượng các yếu tố bạn cần, từ một loạt các số như thế này

print random.sample(range(numLow, numHigh), 3)

Hướng dẫn how do you generate a unique random number in a range python? - làm cách nào để bạn tạo một số ngẫu nhiên duy nhất trong một dãy python?

Đã trả lời ngày 3 tháng 4 năm 2014 lúc 15:31Apr 3, 2014 at 15:31

Hướng dẫn how do you generate a unique random number in a range python? - làm cách nào để bạn tạo một số ngẫu nhiên duy nhất trong một dãy python?

Thefourtheyethefourtheyethefourtheye

226K52 Huy hiệu vàng443 Huy hiệu bạc486 Huy hiệu Đồng52 gold badges443 silver badges486 bronze badges

1

Bạn có thể thêm vào

for x in range (0, n):
    listOfNumbers.append(random.randint(numLow, numHigh))
6 cho đến khi bạn đạt được
for x in range (0, n):
    listOfNumbers.append(random.randint(numLow, numHigh))
7:

setOfNumbers = set()
while len(setOfNumbers) < n:
    setOfNumbers.add(random.randint(numLow, numHigh))

Hãy cẩn thận khi có một phạm vi nhỏ hơn sẽ phù hợp với

for x in range (0, n):
    listOfNumbers.append(random.randint(numLow, numHigh))
7. Nó sẽ lặp lại mãi mãi, không thể tìm thấy các số mới để chèn lên đến
for x in range (0, n):
    listOfNumbers.append(random.randint(numLow, numHigh))
7

Đã trả lời ngày 3 tháng 4 năm 2014 lúc 15:32Apr 3, 2014 at 15:32

Hướng dẫn how do you generate a unique random number in a range python? - làm cách nào để bạn tạo một số ngẫu nhiên duy nhất trong một dãy python?

1

Bạn có thể sử dụng chức năng

for x in range (0, n):
    listOfNumbers.append(random.randint(numLow, numHigh))
5 từ thư viện tiêu chuẩn để chọn các yếu tố k từ dân số:

import random
random.sample(range(low, high), n)

Trong trường hợp có một loạt các số khá lớn, bạn có thể sử dụng

>>> import random
>>> random.sample(range(1, 100), 3)
[77, 52, 45]
1 với một trình tạo ngẫu nhiên vô hạn:

import itertools
import random

def random_gen(low, high):
    while True:
        yield random.randrange(low, high)

gen = random_gen(1, 100)
items = list(itertools.islice(gen, 10))  # Take first 10 random elements

Sau khi cập nhật câu hỏi, bây giờ rõ ràng là bạn cần n số (duy nhất) khác biệt.

import itertools
import random

def random_gen(low, high):
    while True:
        yield random.randrange(low, high)

gen = random_gen(1, 100)

items = set()

# Try to add elem to set until set length is less than 10
for x in itertools.takewhile(lambda x: len(items) < 10, gen):
    items.add(x)

Hướng dẫn how do you generate a unique random number in a range python? - làm cách nào để bạn tạo một số ngẫu nhiên duy nhất trong một dãy python?

Đã trả lời ngày 3 tháng 4 năm 2014 lúc 15:39Apr 3, 2014 at 15:39

Maxbublismaxbublismaxbublis

1.24310 Huy hiệu bạc21 Huy hiệu đồng10 silver badges21 bronze badges

0

Làm thế nào để bạn có được số ngẫu nhiên duy nhất trong Python?

Để tạo số ngẫu nhiên trong python, hàm randint () của mô -đun ngẫu nhiên được sử dụng.Randint () chấp nhận hai tham số: điểm bắt đầu và điểm kết thúc.Cả hai nên là số nguyên và giá trị đầu tiên phải luôn luôn nhỏ hơn so với thứ hai.randint() function of random module is used. randint() accepts two parameters: a starting point and an ending point. Both should be integers and the first value should always be less than the second.

Làm thế nào để bạn tạo ra một số ngẫu nhiên duy nhất?

Trong một cột, sử dụng công thức = rand () để tạo một tập hợp các số ngẫu nhiên trong khoảng từ 0 đến 1.use =RAND() formula to generate a set of random numbers between 0 and 1.

Làm thế nào để bạn tạo ra một số ngẫu nhiên mà không có các bản sao trong Python?

Nhập khẩu Numpy dưới dạng NP;np.random.permuting (100) [: 10] cũng tạo ra 10 số được chọn từ 0 đến 99, không có bản sao.np. random. permutation(100)[:10] also generates 10 numbers selected from 0 to 99, without duplicates.

Làm thế nào để bạn tạo ra một số ngẫu nhiên từ trong một phạm vi?

Phương pháp 1: Sử dụng toán học.Hàm ngẫu nhiên () được sử dụng để trả về số giả ngẫu nhiên trong phạm vi giữa phạm vi [0,1), 0 (bao gồm) và 1 (độc quyền).Số ngẫu nhiên này sau đó có thể được chia tỷ lệ theo phạm vi mong muốn.Using Math. random() function is used to return a floating-point pseudo-random number between range [0,1) , 0 (inclusive) and 1 (exclusive). This random number can then be scaled according to the desired range.