Random 以下算法的预期迭代次数是多少?

Random 以下算法的预期迭代次数是多少?,random,time-complexity,Random,Time Complexity,答案在很大程度上取决于随机(1,n)函数。如果随机函数服从A(意味着范围内的每个数的概率:[1,n]和其他的一样),那么你可以考虑2种情况: 第一个随机索引是k的索引:它是最佳情况,因此最佳情况的复杂度是O(1) 您选择n-1个随机数,然后尝试n-1次,结果失败!因此,在第n次尝试中,您将获得所需的索引。请注意,如果随机函数具有均匀分布,则获得集合(范围)中每个元素的概率为p=1/n因此,对于特殊元素,您必须至少尝试1/p=n次!这是最坏的情况!所以最坏情况的复杂性是ω(n) 若随机性不一致,那

答案在很大程度上取决于
随机(1,n)
函数。如果随机函数服从A(意味着范围内的每个数的概率:[1,n]和其他的一样),那么你可以考虑2种情况:

  • 第一个随机索引是k的索引:它是最佳情况,因此
    最佳情况的复杂度是O(1)
  • 您选择n-1个随机数,然后尝试n-1次,结果失败!因此,在第n次尝试中,您将获得所需的索引。请注意,如果随机函数具有均匀分布,则获得集合(范围)中每个元素的概率为p=1/n因此,对于特殊元素,您必须至少尝试1/p=n次!这是最坏的情况!所以
    最坏情况的复杂性是ω(n)

  • 若随机性不一致,那个么最坏的情况就是无穷多次迭代。@AldenBe你们完全正确。正如我所说,考虑随机函数的均匀分布。这种分布通常用于许多编程语言,如python、Matlab等,。。。作为默认的随机函数。
    Algorithm RSearch(A,n,k)
    //A is list of n distinct unsorted elements
    //assuming index starts from 1 and ends at n
    // k is element we want to search, assuming there is k at exactly one index
    {
        repeat
        {
          i= random(1,n);    // pick random index from 1 to n with equal probability
          if(A[i]==k)
            return true; 
        }  
        until true;
    }