我创建了一个宾果游戏,其中生成随机数并调用列表。
bingo_num = random.randint(1,100)
如何停止多次生成随机数
答案 0 :(得分:4)
我建议,random.shuffle
from random import shuffle
my_list = range(100)
shuffle(my_list)
print my_list
但如果您只需要特定数量的唯一数字,则可以使用random.sample
,就像这样
from random import sample
my_list = range(100)
print sample(my_list, 10)
答案 1 :(得分:3)
您可以从随机库中取sample范围
>>> import random
>>> nums = random.sample(range(0,200),100)
>>> nums
[143, 149, 52, 183, 161, 179, 180, 155, 163, 157, 139, 15, 154, 181, 56, 29, 31,
14, 77, 82, 165, 32, 35, 92, 109, 172, 69, 99, 54, 3, 88, 76, 11, 126, 78, 162,
198, 145, 124, 75, 114, 174, 136, 100, 190, 193, 148, 153, 167, 113, 38, 17, 16
8, 0, 196, 73, 47, 164, 184, 6, 140, 30, 58, 74, 4, 79, 147, 178, 191, 21, 112,
13, 27, 57, 199, 116, 28, 104, 111, 71, 23, 85, 170, 25, 141, 156, 91, 7, 182, 1
34, 94, 169, 175, 166, 137, 160, 129, 36, 67, 135]
答案 2 :(得分:2)
就像在真正的 Bingo游戏中一样。他们不会掷骰子,而是将所有数字放在一个大包里,摇一摇,然后一次抽出一个数字,直到所有数字都用完为止。
numbers = list(range(1, 101)) # all the numbers in the bag, from 1 to 100
random.shuffle(numbers) # shake the bag
bingo_num = numbers.pop() # pull out next number (inside your loop)
答案 3 :(得分:1)
您可以先创建一个包含所有可能数字的列表。然后从该列表中选择一个随机数,将其添加到结果列表中,最后将其从可能的数字列表中删除。
例如,如果您想要0-9
中的5个不同的数字:
possible_numbers = range(10)
numbers = []
for i in range(5):
index = random.randint(0, len(possible_numbers) - 1)
numbers.append(possible_numbers[index])
del possible_numbers[index]
答案 4 :(得分:0)
这样的事情应该有效:
numbers = []
while len(numbers) < 100:
bingo_num = random.randint(1,100)
if not bingo_num in numbers:
numbers.append(bing_num)
答案 5 :(得分:0)
如果已经在使用中,您可以创建一个新号码
优点:简单的代码
缺点:如果使用几乎所有数字都会运行很长时间(有更好的解决方案)
示例代码:
bingo_num_list = []
# init num
bingo_num = random.randint(1,100)
# create new numbers till "find" a not used one
while bingo_num in bingo_num_list:
bingo_num = random.randint(1,100)
bingo_num_list.append(bingo_num)
答案 6 :(得分:0)
构建所有数字的列表然后选择一个随机1,将其从列表中删除然后选择下一个:
#!/usr/bin/python
import random
myNumz=[]
xIdx=1
while xIdx<101:
myNumz.insert(xIdx,xIdx)
xIdx+=1
xIdx=100
while xIdx>0:
xIdx-=1
baseNum=random.randint(0,xIdx)
print myNumz[baseNum]
myNumz.remove(myNumz[baseNum])