How to incrementally sample without replacement?

前端 未结 13 1625
别跟我提以往
别跟我提以往 2020-12-05 00:38

Python has my_sample = random.sample(range(100), 10) to randomly sample without replacement from [0, 100).

Suppose I have sampled n

13条回答
  •  误落风尘
    2020-12-05 01:01

    If you know in advance that you're going to want to multiple samples without overlaps, easiest is to do random.shuffle() on list(range(100)) (Python 3 - can skip the list() in Python 2), then peel off slices as needed.

    s = list(range(100))
    random.shuffle(s)
    first_sample = s[-10:]
    del s[-10:]
    second_sample = s[-10:]
    del s[-10:]
    # etc
    

    Else @Chronial's answer is reasonably efficient.

提交回复
热议问题