Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有k的情况下进行随机采样,直到生成某个整数?(Python)_Python_Loops_While Loop_Random Sample - Fatal编程技术网

如何在没有k的情况下进行随机采样,直到生成某个整数?(Python)

如何在没有k的情况下进行随机采样,直到生成某个整数?(Python),python,loops,while-loop,random-sample,Python,Loops,While Loop,Random Sample,我在Python中工作,基本上我有一个整数列表: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 10] 使用变量total,我试图找出如何从这个列表中生成随机数(不替换),直到生成10,然后停止。我想

我在Python中工作,基本上我有一个整数列表:

[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 10]
使用变量
total
,我试图找出如何从这个列表中生成随机数(不替换),直到生成10,然后停止。我想这会在一段时间内使用
random.shuffle
,但我不确定。有什么提示或建议吗?

您可以从
total
中弹出一个随机元素,然后检查它是否是
10
。例如:

while total.pop(random.randrange(len(total))) != 10:
     ... # do your stuff until the 10 is chosen
total.pop(i)从
total
中删除索引
i
的元素,因此这将起作用,无需替换。也

编辑:

也许你试图通过多次使用同一个元素来实现的是一个加权随机选择;这将是一个相当丑陋的解决方案。在这种情况下,看看这个问题()是否有帮助。干杯。

使用
random.shuffle
甚至不需要循环

random.shuffle(l)
random_selection = l[ :l.index(10) ]

对不起,
total
在这个场景中扮演什么角色?你想知道产生
10
需要多少个循环吗?是的,total只是我的一组整数,它们的数字是1,2,3…10,我想从这组整数中随机抽取数字,直到得到10,然后停止。标准库
random.choice
从非空序列中选择一个随机元素。谢谢!我想这就是我要找的。但是,它看起来可以生产最多10台的所有产品,但不包括10台。它是否包含10?@user2057725:
l.index(10)+1