python实现有一个列表有30个数据,随机100次,每次随机从里面取一个数据,如何随机取得值和最近几次都不一样

时间: 2024-02-20 10:58:42 浏览: 20
可以使用`random.sample()`方法来实现从列表中随机取出不重复的元素。每次取出一个元素后,可以将该元素从列表中删除,这样下一次随机取值时就不会重复。同时,可以记录下最近几次取出的值,每次随机前判断当前元素是否在最近几次内出现过,若出现就重新随机取值,直到取到一个最近几次都没有出现过的元素。 以下是示例代码: ```python import random lst = list(range(30)) # 初始化列表 recent = [] # 记录最近几次取出的值 for i in range(100): if len(recent) >= 5: # 最近几次记录达到5个,删除最早的一个 recent.pop(0) while True: val = random.sample(lst, 1)[0] # 随机取出一个不重复的元素 if val not in recent: # 判断当前元素是否在最近几次内出现过 recent.append(val) lst.remove(val) # 从列表中删除该元素 print(val) break ``` 注意:该代码中假设列表中的元素是不重复的,若列表中存在重复元素,则需要使用其他方法来判断是否重复。
相关问题

python实现有一个列表有30个数据,随机100次,每次随机从里面取一个数据,然后存到另一个列表,但是要确保每次随机取得值和最近5次的值都不一样

好的,我来给你提供一种实现方式。 首先,我们可以先定义一个包含 30 个数据的列表 `all_data`,一个空列表 `selected_data` 用于存储选中的数据,以及一个变量 `recent_data` 用于记录最近 5 次选中的数据。 接下来,我们可以使用 `random.choice()` 函数从 `all_data` 中随机选取一个数据,并判断其是否与最近 5 次选中的数据都不相同。如果是,则将其加入到 `selected_data` 中,并更新 `recent_data`。 具体实现代码如下: ```python import random all_data = [i for i in range(1, 31)] selected_data = [] recent_data = [] for i in range(100): # 从 all_data 中随机选择一个数据 data = random.choice(all_data) # 判断选中的数据是否与最近 5 次选中的数据都不相同 if len(recent_data) < 5 or data not in recent_data: selected_data.append(data) recent_data.append(data) # 最近 5 次选中的数据只保留最后 5 个 if len(recent_data) > 5: recent_data.pop(0) else: # 如果选中的数据与最近 5 次选中的数据有重复,则重新选择 while data in recent_data: data = random.choice(all_data) selected_data.append(data) recent_data.append(data) if len(recent_data) > 5: recent_data.pop(0) print(selected_data) ``` 这个程序会输出一个包含 100 个数据的列表 `selected_data`,其中每个数据都满足与最近 5 次选中的数据都不相同的要求。

python实现有一个列表A有30个数据,随机100次,每次随机从里面取一个数据,然后存到另一个列表B,但是要确保每次随机取得值和最近5次的值都不一样,而且列表A里面的每个数据在列表B里面至少出现3次

好的,这里给出一种实现方式。 首先,我们可以先定义一个包含 30 个数据的列表 `A`,一个空列表 `B` 用于存储选中的数据,以及一个字典 `count_dict` 用于记录每个数据在列表 `B` 中出现的次数。 接下来,我们可以使用 `random.choice()` 函数从 `A` 中随机选取一个数据,并判断其是否与最近 5 次选中的数据都不相同,并且在 `count_dict` 中对其出现的次数加 1。如果是,则将其加入到 `B` 中,并更新最近 5 次选中的数据。 在每次选中数据后,我们需要检查 `count_dict` 中记录的每个数据出现的次数是否都大于等于 3。如果有任何一个数据的出现次数小于 3,则需要重新选取数据,直到所有数据都满足出现次数大于等于 3。 具体实现代码如下: ```python import random A = [i for i in range(1, 31)] B = [] count_dict = {i: 0 for i in A} recent_data = [] while len(B) < 100: # 从 A 中随机选择一个数据 data = random.choice(A) # 判断选中的数据是否与最近 5 次选中的数据都不相同 if len(recent_data) < 5 or data not in recent_data: B.append(data) recent_data.append(data) # 最近 5 次选中的数据只保留最后 5 个 if len(recent_data) > 5: recent_data.pop(0) # 在 count_dict 中记录选中的数据出现的次数 count_dict[data] += 1 # 检查每个数据是否都出现了至少 3 次 all_appear_more_than_3 = all(count_dict[data] >= 3 for data in A) if not all_appear_more_than_3: # 如果有数据出现次数小于 3,则需要重新选取数据 B.pop() count_dict[data] -= 1 recent_data.pop() else: # 如果选中的数据与最近 5 次选中的数据有重复,则重新选择 while data in recent_data: data = random.choice(A) B.append(data) recent_data.append(data) if len(recent_data) > 5: recent_data.pop(0) count_dict[data] += 1 all_appear_more_than_3 = all(count_dict[data] >= 3 for data in A) if not all_appear_more_than_3: B.pop() count_dict[data] -= 1 recent_data.pop() print(B) ``` 这个程序会输出一个包含 100 个数据的列表 `B`,其中每个数据都满足与最近 5 次选中的数据都不相同的要求,并且列表 `A` 中的每个数据在列表 `B` 中都至少出现了 3 次。

相关推荐

最新推荐

recommend-type

Python实现随机取一个矩阵数组的某几行

今天小编就为大家分享一篇Python实现随机取一个矩阵数组的某几行,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

python按比例随机切分数据的实现

主要介绍了python按比例随机切分数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

python 实现快速生成连续、随机字母列表

今天小编就为大家分享一篇python 实现快速生成连续、随机字母列表,具有很好的价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

python实现随机漫步算法

主要为大家详细介绍了python实现随机漫步算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

详解Python利用random生成一个列表内的随机数

主要介绍了详解Python利用random生成一个列表内的随机数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

2. 通过python绘制y=e-xsin(2πx)图像

可以使用matplotlib库来绘制这个函数的图像。以下是一段示例代码: ```python import numpy as np import matplotlib.pyplot as plt def func(x): return np.exp(-x) * np.sin(2 * np.pi * x) x = np.linspace(0, 5, 500) y = func(x) plt.plot(x, y) plt.xlabel('x') plt.ylabel('y') plt.title('y = e^{-x} sin(2πx)') plt.show() ``` 运行这段
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。