我正在制作一个随机数发生器,但我不希望这些数字再次发生.所以例如
[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')
Run Code Online (Sandbox Code Playgroud)
我想我没有让自己清楚.我想生成一个随机数= 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')
Run Code Online (Sandbox Code Playgroud)
使用random.sample()而不是逐个填充列表(请参阅文档):
返回从总体序列中选择的独特元素的长度列表.用于无需更换的随机抽样.
random.sample(range(10), 5)
>>>> [5, 9, 1, 6, 3]
Run Code Online (Sandbox Code Playgroud)
random.sample()需要提供一个列表(或任何可迭代的,真的)来从中选择一个子集.在这里,我给它列出了从0开始的前10个数字.