如何生成随机值列表(不包括另一个列表中的值)

埃里克X

我正在使用Python 3.6.3

我的代码生成五个值(整数类型)的随机列表。

将此随机列表中的值与另一个列表进行比较,该列表包含要从生成的列表中排除的值。这意味着,如果在exclude_numbers列表中提到了随机数,则必须处理重绘以获得新值。

下面是一个简化的源代码:(您可以复制/粘贴,此代码正在运行)

import numpy as np
import random

excluded_values = [1,2,3,4,5,6,15,18,30] # values to exclude from the random list


print ("draw_numbers to exclude    ",excluded_values,"\n")
loops = 1

for ln in range (0,loops):
#   Random list
    z=[]
    z=random.sample(range(1,30), 5)  # no duplicates
    z.sort()
    print ("Draw numbers original list   z   ", z,"\n")
# Standard deviation draw_numbers
    deviation = np.std(z)
    deviation=float(deviation)
    deviation= round (deviation,5)
    print ("draw_numbers  loop number ",ln,"  ", z, "   standard deviation    ", deviation,"\n")
    control_list = []
    for i in range (0,5):
               
        draw_number = z[i]
        draw_number = str(draw_number)
        print ("Draw number   z[",i,"]     ",draw_number)             
        print ("Original random list z   ",z)
               
        if int(draw_number) in excluded_values:  
            print ("Present in excluded_values")
# trigger if draw_number must be excluded
            draw_number= random.randint(1,50)
            print ("------>>>  REDRAW draw_number    ", draw_number)
            draw_number = int (draw_number)
            control_list.append(draw_number)
            print ("Control list   ", control_list,"   Original list  z  ",z,"\n")
        else:
            draw_number = int (draw_number)
            control_list.append(draw_number)
            print ("Control list   ", control_list,"     z  ",z,"\n")
        continue
        z = control_list 
    continue

但是问题仍然存在。

当发生重画时,必须对照exclude_values列表AND control_list来检查新的画号,以使最终的control_list完全干净而不重复。

在我的代码中尝试了多种方式后,我没有找到如何安排这种双重过程的方法。我可能错过了一个论点或方法,而且我不知道如何管理这个“循环”过程。

下面是运行上述代码的示例:

draw_numbers to exclude     [1, 2, 3, 4, 5, 6, 15, 18, 30] 

Draw numbers original list   z    [4, 6, 9, 12, 18] 

draw_numbers  loop number  0    [4, 6, 9, 12, 18]    standard deviation     4.91528 

Draw number   z[ 0 ]      4
Original random list z    [4, 6, 9, 12, 18]
 Present in excluded_values
------>>>  REDRAW draw_number     45
Control list    [45]    Original list  z   [4, 6, 9, 12, 18] 

Draw number   z[ 1 ]      6
Original random list z    [4, 6, 9, 12, 18]
 Present in excluded_values
------>>>  REDRAW draw_number     40
Control list    [45, 40]    Original list  z   [4, 6, 9, 12, 18] 

Draw number   z[ 2 ]      9
Original random list z    [4, 6, 9, 12, 18]
Control list    [45, 40, 9]      z   [4, 6, 9, 12, 18] 

Draw number   z[ 3 ]      12
Original random list z    [4, 6, 9, 12, 18]
Control list    [45, 40, 9, 12]      z   [4, 6, 9, 12, 18] 

Draw number   z[ 4 ]      18
Original random list z    [4, 6, 9, 12, 18]
 Present in excluded_values
------>>>  REDRAW draw_number     14
Control list    [45, 40, 9, 12, 14]    Original list  z   [4, 6, 9, 12, 18] 

感谢您的帮助和宝贵时间。

无论如何,要保重并在@家中保持安全。

来自法国巴黎的问候:)

里尔·科恩(Lior Cohen)

在评论之后,这是一个更简单的解决方案

from random import sample

k = 5
all_values = range(30)
excluded_values = [1,2,3,4,5,6,15,18,30]

k_sampled = sample(set(all_values) - set(excluded_values), k)
print(k_sampled) # --> [28, 10, 8, 11, 20]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据rails中另一个下拉列表的值生成下拉列表值

如何从另一个列表中的列表中获取另一个列表中的值

熊猫python从另一个列值中从列表列中随机选择值

在另一个列表中搜索列表值

Lua-从一个范围(或表)中选择一个随机值,但不包括一个(或另一个)表的值

如何在另一个列表中返回3个最低值的列表

如何基于另一个列表中对象的字段值从列表中删除元素

如何将一个值放在另一个列表中?

如何用另一个列表替换列表中的值?

如何使用另一个列表作为参考替换列表中的连续值?

如何使用另一个列表中的布尔值屏蔽列表

如何为另一个列表中的列表分配新值?

如何从另一个列表中获取列表与值的组合?

如何检查列表的所有值是否在另一个列表python中

如何更改另一个列表中列表项的值?

如何仅在另一个 python 列表中的某个值之后附加到列表?

如何从 SQL 中另一个表的列生成随机值?

如何根据相同元素的另一个值在字典列表中搜索元素的值?

如何从列表中选择值最接近 Ansible 中的另一个值的项目

如何在另一个已经存在的列表中的列表中添加一个值?

如何使用一个列表中的条件从另一个列表中查找值

在javascript中从另一个列表中减去一个列表的值

从另一个列表中的一个列表中查找任何值

如何从另一个JSON对象列表中的一个JSON对象列表中分配值

如何通过存储在另一个列表中的索引值对一个列表进行排序

如何将一个列表中的索引匹配到另一个列表并存储值?

如何只获得另一个列表中一个列表的值?

如何根据另一个列表的值查找一个列表的索引?

Python:用列表中另一个列表中的值替换列表中的元素