rand生成随机数不重复
时间: 2024-10-23 10:15:26 浏览: 42
在编程中,"rand"通常用于生成随机数,但如果你需要生成不重复的随机数,这可能会涉及到一些额外的工作,因为大多数基础的随机数生成函数都是连续生成的,而非从预设序列中选取。不过有几种方法可以实现这个目标:
1. **使用数组和索引**:创建一个固定大小的数组,并将已生成的随机数存储起来。当需要新的随机数时,先检查当前数组是否有空位,如果没有,就生成一个新的随机数并替换数组的一个旧值。
```python
import random
used_numbers = []
while len(used_numbers) < max_count:
num = random.randint(min_val, max_val)
if num not in used_numbers:
used_numbers.append(num)
```
2. **使用列表推导式**:在Python中,你可以结合`random.sample`函数来确保每次选取的随机数都不重复,它会从序列中随机选择指定数量的唯一元素。
```python
from random import sample
unique_randoms = sample(range(start, stop), k=desired_amount)
```
这里,`sample`会返回一个指定长度的随机样本,不会包含重复项。
3. **哈希集合(Set)**:如果数据量较大,可以考虑使用哈希集合(如Python的`set`),它们内部不允许有重复元素,添加新元素时会自动去除重复。
```python
unique_set = set()
while len(unique_set) < max_count:
unique_set.add(random.randint(min_val, max_val))
```
请注意,上述方法都假设了你有一个明确的“最大计数”(max_count)。如果不知道具体的数量,可能需要循环直到达到某个特定条件为止。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)