2015-01-20 3 views
-2

Я только что написал код для генерации случайных чисел и попытался сопоставить его со случайными числами, но я не знаю, как не повторять значение randint, может кто-нибудь мне помочь?Как не повторять значение randint

from random import randint 
import time 

first_time = time.ctime() 
print first_time 

x = randint(1, 10000) 
while x != randint(1, 10000): 
    ran = randint(1, 10000) 
    print ran 
    x = ran 

print 'You number is: ', x 
print ('You stared at: '+first_time) 
print ('You finished at: '+time.ctime()) 
print('Finish') 
+0

Так как только вы выбираете случайное число, вы хотите, чтобы убедиться, что это случайное число, не выбирается снова – rayryeng

+2

что вы имеете в виду «не повторить randint value "? – BrenBarn

+0

да вы знаете, как @rayryeng – dmb

ответ

2

Простейшие могут быть:

deck = list(range(1, 10001)) 
random.shuffle(deck) 

и использовать deck.pop(), чтобы получить следующий "randint без повторения".

Это как раз то, как вы получаете случайную карточку без повторения с колоды (на самом деле само название random.shuffle предлагает, и почему я назвал переменную deck :-): вы начинаете со всех карточек в колоде, перетасовываете палубу один раз (полностью, конечно!), а затем просто обрабатывать последнюю карту с верхней части колоды каждый раз, не откладывая ее обратно в колоду.

0

Устранение решения Alex, если вы не хотите вести список произвольной длины (например, если вам нужно несколько сотен уникальных случайных чисел в диапазоне (0..a gazillion), то вы вместо этого сохранить список номеров, которые были выбраны уже:?

numbers = set() 
while len(numbers) < enough: # enough is defined somewhere... 
    numbers.add (random.randint(0, upper_limit)) 
Смежные вопросы