Python中查找等概率最大出现元素的索引
在本教程中,我们学习如何使用 Python 查找等概率最大出现元素的索引。如果我们将输入设为 {1, 2, 5, 3, 4, 5, 6, 5, 7, 8, 5, 9},则 5 会被分四次获取。索引号 5 是 2、5、7 和 10。这里,我们给出了一个解决方案,它以相等的概率返回最大出现元素的索引。如果数组有两个最大的出现,则解决方案应考虑第一个最大的出现。
例子:
这里给出一个数组索引输入及其相应输出的示例。
输入:
arr[] = [ 1 , 2 , 5 , 3 , 4 , 5 , 6 , 5 , 7 , 8 , 5 , 9 ]
输出:
5是 频率最大的元素, 出现 在 第二个 索引处。 |
上述所有输出都有相同的概率。
算法:
在这里,我们学习使用 Python 查找等概率最大出现元素索引的算法。
- 首先定义函数findIndexOfMaxElement,有两个参数,分别是arr和n
- 然后,保留地图上所有输入元素的计数。
- 现在,我们创建一个 for 循环。
- 然后,遍历这张地图。
- 之后,我们需要找到哪个元素最先出现的时间最长。
- 然后,生成一个 1 之间的“n”个随机数,并统计图中出现次数最多的元素。
- 现在我们初始化数组输入 arr[]
- 最后,遍历输入。然后,它返回最大出现元素的索引值的第 n 次出现。
这里,我们给出Python中的程序代码,用于查找等概率出现最大的元素的索引。代码如下 :
# 使用 Python 以相等概率查找最大出现元素的索引
# 导入随机库 ;
import random
# 使用两个参数定义函数 findIndexOfMaxElement:arr 和 n
#它从数组中随机查找最大出现元素的索引值;
def findIndexOfMaxElement(arr, n):
在这里,使用 dict() 对地图进行了均衡化处理;
map = dict()
# 现在在这里创建一个 for 循环 ;
for i in range(n):
if(arr in map):
map[arr] = map[arr] + 1
else:
map[arr] = 1
max_element = -323567
最大出现元素存储在这里
# 最大出现元素的计数存储在这里 ;
max_so_far = -323567
然后,遍历该地图,并在最长时间内找到哪个元素最先出现;
for p in map:
if (map[p] > max_so_far):
max_so_far = map[p]
max_element = p
这里,随机数 k 在 [1, max_so_far] 之间产生;
k = int( ((random.randrange(1, max_so_far, 2) % max_so_far) + 1))
i = 0
count = 0
# 再次遍历数组,返回最大元素 第 k 次出现的索引;
while ( i < n ):
if (arr == max_element):
count = count + 1
# 此处打印最大元素 第 k 次出现的索引;
if (count == k):
print("5 is the element with maximum frequency, which is present at index: " , i )
break
i = i + 1
初始化数组输入 arr[] ;
arr = [1, 2, 5, 3, 4, 0, 5, 6, 5, 7, 8, 5, 9]
# Find the length of the array and store it in n
n = len(arr)
findIndexOfMaxElement(arr, n)
现在,我们在 Python 中编译上述代码,编译成功后运行它。输出结果如下
5 is the element with maximum frequency, which is present at index: 11
结论
在本教程中,我们将学习如何使用 Python 以等概率查找最大出现元素的索引。在这里,我们主要检查哪个元素在给定的映射中出现的时间最多,然后随机找出最大出现元素的索引值。我们还要学习这个程序的算法。根据这一算法,我们编写上述 Python 代码并分享其输出结果。