阅微客栈 » 头脑风暴

关于STL里重排数组算法random_shuffle()

(2 posts)
  • 发起于 5 月 之前,作者 king
  • 最新回复 来自于 zhang

Tags:

还没有 tags.

  1. 源码如下:
    template <class RandomAccessIterator, class Distance>
    void __random_shuffle(RandomAccessIterator first, RandomAccessIterator last,
    Distance*) {
    if (first == last) return;
    for (RandomAccessIterator i = first + 1; i != last; ++i)
    #ifdef __STL_NO_DRAND48
    iter_swap(i, first + Distance(rand() % ((i - first) + 1)));
    #else
    iter_swap(i, first + Distance(lrand48() % ((i - first) + 1)));
    #endif
    }

    这里的iter_swap(i, first + Distance(rand() % ((i - first) + 1)));能否保证数组是均匀的重排呢?
    如何保证?

    发布于 5 月 之前 #
  2. 这个先给我们讲讲函数都是啥意思吧,我还看不懂这些源代码。

    发布于 2 月 之前 #

该主题的 RSS Feed

回复

你必须 登录 后发帖。