pyhon不重复获取随机数
时间: 2023-08-24 11:06:26 浏览: 56
在Python中,你可以使用循环来确保获取的随机数不重复。以下是一个示例代码:
```python
import random
used_numbers = set()
def get_unique_random():
while True:
random_num = random.randint(1, 10)
if random_num not in used_numbers:
used_numbers.add(random_num)
return random_num
# 获取5个不重复的随机数
for _ in range(5):
unique_random = get_unique_random()
print(unique_random)
```
在这个示例中,我们使用了一个集合 `used_numbers` 来存储已经使用过的随机数。`get_unique_random` 函数会在每次调用时生成一个随机数,并检查它是否已经在 `used_numbers` 中。如果是,它会继续生成新的随机数,直到找到一个不重复的。然后,我们使用一个循环来调用 `get_unique_random` 函数,并打印出获取的不重复随机数。
相关问题
python 点名不重复程序
编写Python点名不重复程序可以通过使用随机数生成器和列表进行实现。
首先,需要从一个名单列表中获取学生姓名。然后,利用随机数生成器在名单列表中随机选择一个学生。为了确保不重复点名,还需要使用一个新的空白列表来存储已经点名过的学生。
接下来,在一个循环中,首先生成一个随机数,然后使用这个随机数从名单列表中选择一个学生。接着,检查这个学生是否已经被点名,并且存在于已点名的学生列表中。如果是,则继续生成随机数直到找到一个未被点名的学生。最后,将这个新学生添加到已点名的列表中。
当已点名的学生数目达到预期的数量时,循环结束,所有学生都已被点名。
下面是一个示例代码实现:
```python
import random
def random_call(names, num_students):
called_students = []
while len(called_students) < num_students:
index = random.randint(0, len(names)-1)
student = names[index]
if student not in called_students:
called_students.append(student)
return called_students
# 以下为测试示例
students = ["张三", "李四", "王五", "赵六", "陈七"]
num_called_students = 3
called_students = random_call(students, num_called_students)
print("点名结果:")
for student in called_students:
print(student)
```
以上代码会从名单列表中随机选取3名学生,并打印出点名结果。
这种方法能确保每次点名不会重复,而且代码结构简单,易于理解和实现。
生成一个当天不重复的 8 位随机数
您可以使用Python中的random和datetime模块来生成当天不重复的8位随机数。以下是一个示例代码:
```python
import random
import datetime
# 获取当前日期,格式为YYYYMMDD
current_date = datetime.datetime.now().strftime('%Y%m%d')
# 生成随机数
random_number = random.randint(10000000, 99999999)
# 将日期和随机数合并并转换为字符串,保证长度为8位
unique_number = current_date + str(random_number)[2:8]
print(unique_number)
```
该代码将生成当天不重复的8位随机数,其中前6位是当前日期,后两位是一个随机数的一部分。