Shuffle elements of an array/n numbers uniformly randomly. Possibley in expected O(n) time

后端 未结 3 1347
谎友^
谎友^ 2021-01-06 17:47

Is it possible to shuffle elements of an n-sized array uniformly, i.e. the probability of any of the n! combinations occurring is the same, in expected O(n) tim

3条回答
  •  庸人自扰
    2021-01-06 18:40

    For each array position:

    Select a random number from current position to end of array

    Swap current position with random position

    That should give you O(n) without the challenge of finding an unused array position. This assumes you can use an in-place swap and that you don't have to create a new array.

提交回复
热议问题