我正在制作一个随机数生成器,但我不希望这些数字再次出现。所以例如
[1,2,3,4]很完美 - [1,1,2,4]不是我想要的,因为一个号码反复出现。
我在这里看过,没有人能解决我正在寻找的问题,按照我的逻辑,这应该有用,但我不知道我做错了什么。
我是python的新手,我看到了一些像我这样的问题,但没有一个问题有同样的问题
import random, timeit
random_num = random.randint(1,10)
cont_randomized_num = random.randint(1,10)
tries = 0
start = timeit.default_timer()
num_guess = 0
stored_numbers = []
while cont_randomized_num != random_num:
if cont_randomized_num == stored_numbers:
cont_randomized_num = random.randint(1,10)
elif cont_randomized_num != stored_numbers:
print(num_guess)
stored_numbers.append(cont_randomized_num)
print(stored_numbers)
cont_randomized_num = random.randint(1,10)
tries +=1
print()
print()
stop = timeit.default_timer()
print(random_num)
print('Number of tries:',tries)
print('Time elapsed:',stop)
input('press ENTER to end')
我想我没有说清楚自己。 我想生成一个随机数= ANSWER 我想要生成第二个数字来尝试匹配ANSWER,如果它不是ANSWER然后将它存储在某个地方。如果第二次生成第二个生成的数字并且它与第一次生成的数字相同,我希望它跳过并生成一个新的数字。保持这种状态,直到第二个生成的数字等于生成的第一个数字。
我已经弄明白了(最后)这里的代码并不复杂,与任何答案或评论无关!这就是我一直要求的。
import random
import timeit
start = timeit.default_timer()
stored_numbers = []
cont_random = random.randint(1,10)
random_num = random.randint(1,10)
times_guessed = 0
while random_num not in stored_numbers:
if cont_random in stored_numbers:
cont_random = random.randint(1, 10)
elif cont_random not in stored_numbers:
print(cont_random)
stored_numbers.append(cont_random)
cont_random = random.randint(1, 10)
times_guessed += 1
print('Answer has been guessed!')
print('Stored numbers',stored_numbers)
print()
print()
stop = timeit.default_timer()
print('Time elapsed:',stop)
print('Times guessed -', times_guessed)
print('The random number:',random_num)
input('Press ENTER to exit')
答案 0 :(得分:5)
使用random.sample()
而不是逐个填充列表(请参阅docs):
返回从总体序列中选择的k长度的唯一元素列表。用于无需替换的随机抽样。
random.sample(range(10), 5)
>>>> [5, 9, 1, 6, 3]
random.sample()
需要提供一个列表(或任何可迭代的,真的)来从中选择一个子集。在这里,我给它列出了从0开始的前10个数字。
答案 1 :(得分:0)
以下是我的解决方案,如果您想在循环中添加更多代码,可以为其添加更多功能。
import random, timeit
def main():
tries = 0
NUMBER_OF_RANDOMS = 4
stored_numbers = []
start = timeit.default_timer()
while len(stored_numbers) != NUMBER_OF_RANDOMS:
current = random.randint(1,10)
tries += 1
if current not in stored_numbers:
stored_numbers.append(current)
stop = timeit.default_timer() - start
print 'Number of tries:', tries
print 'Time elapsed:', stop
print stored_numbers
if __name__ == '__main__':
main()
这会做你想要的吗?我相信你做了不必要的复杂代码。