Hướng dẫn how do you get unique random numbers in python? - làm thế nào để bạn có được số ngẫu nhiên duy nhất trong python?

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 get unique random numbers in python? - làm thế nào để bạn có được số ngẫu nhiên duy nhất trong 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.73316 Huy hiệu vàng51 Huy hiệu bạc66 Huy hiệu Đồng16 gold badges51 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 get unique random numbers in python? - làm thế nào để bạn có được số ngẫu nhiên duy nhất trong 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 get unique random numbers in python? - làm thế nào để bạn có được số ngẫu nhiên duy nhất trong 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 get unique random numbers in python? - làm thế nào để bạn có được số ngẫu nhiên duy nhất trong python?

Thefourtheyethefourtheyethefourtheye

227K52 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 get unique random numbers in python? - làm thế nào để bạn có được số ngẫu nhiên duy nhất trong 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 get unique random numbers in python? - làm thế nào để bạn có được số ngẫu nhiên duy nhất trong 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 tôi có thể tạo ra một số số ngẫu nhiên duy nhất từ ​​1 đến 100 bằng Python?

Hàm randint () tạo số nguyên ngẫu nhiên cho bạn. Nếu bạn gọi hàm, nó sẽ trả về một số nguyên ngẫu nhiên n sao cho một. If you call the function, it returns a random integer N such that a <= N <= b . The randint() method to generates a whole number (integer). You can use randint(0,50) to generate a random number between 0 and 50.

Làm thế nào để Python tạo ra 5 số ngẫu nhiên?

Bằng cách sử dụng Random.randint (), chúng ta có thể thêm các số ngẫu nhiên vào danh sách.random. randint() we can add random numbers into a list.