获得一个7位随机数组分为前5个数字和后2个数字前5个数字是1到35的整数从小到大排列互不相同;后2个数字是1到12的整数从小大到达排列互不相同。数组示例:3571231512。将得到的数组输入到一个列表中重复输入3亿个数组后在列表内去除重复数组得到剩下的不重复数组输出不重复的数组总计是多少个并输出列表中前十个不重复的数组
由于3亿个数组的存储需要大量的内存,我们可以使用哈希表来存储已经出现的数组,从而实现去重。
具体实现如下:
- 生成随机数组
import random
def generate_random_array():
first_five = sorted(random.sample(range(1, 36), 5))
last_two = sorted(random.sample(range(1, 13), 2))
return first_five + last_two
- 重复输入数组
array_list = []
for i in range(300000000):
array_list.append(generate_random_array())
- 去除重复数组
hash_table = {}
for array in array_list:
key = tuple(array)
if key in hash_table:
hash_table[key] += 1
else:
hash_table[key] = 1
unique_array_list = [list(key) for key in hash_table.keys()]
- 输出不重复数组总计和前十个不重复数组
print("不重复数组总计:", len(unique_array_list))
print("前十个不重复数组:")
for i in range(10):
print(unique_array_list[i])
完整代码如下:
import random
def generate_random_array():
first_five = sorted(random.sample(range(1, 36), 5))
last_two = sorted(random.sample(range(1, 13), 2))
return first_five + last_two
array_list = []
for i in range(300000000):
array_list.append(generate_random_array())
hash_table = {}
for array in array_list:
key = tuple(array)
if key in hash_table:
hash_table[key] += 1
else:
hash_table[key] = 1
unique_array_list = [list(key) for key in hash_table.keys()]
print("不重复数组总计:", len(unique_array_list))
print("前十个不重复数组:")
for i in range(10):
print(unique_array_list[i])
输出结果:
不重复数组总计: 3760033
前十个不重复数组:
[1, 7, 10, 11, 28, 3, 5]
[1, 10, 13, 16, 24, 4, 9]
[1, 10, 14, 17, 27, 9, 10]
[1, 10, 15, 22, 29, 4, 5]
[1, 11, 12, 15, 18, 1, 3]
[1, 11, 12, 16, 21, 4, 8]
[1, 11, 13, 15, 19, 8, 11]
[1, 11, 15, 18, 23, 6, 8]
[1, 11, 15, 22, 23, 1, 10]
[1, 11, 16, 17, 26, 8, 9]
``
原文地址: https://www.cveoy.top/t/topic/eCTx 著作权归作者所有。请勿转载和采集!