random.choice()

random.choice() 从样本中 等概率 的采取一个样本

random.choices()

random.choices(population, weights=None, cum_weights=None, k=2) 从样本中有放回(也就是可被重复采集,一个序列可能包含重复项)的采集 指定个数 的序列,且被采集的每一项可设置权重 参数说明: population: 样本 weights:每个样本被赋予的权重(又称相对权重),决定每个样本被采的概率,如[10, 0, 30, 60, 0] cum_weights:累积权重,相对权重[10, 0, 30, 60, 0]相当于累积权重[10, 10, 40, 100, 100] k: 采样元素个数

random.sample()

random.sample(population, k)样本中无放回的采集 指定个数 的序列 population: 样本 k: 采样元素个数

numpy.random.choice()

numpy.random.choice(a, size=None, replace=True, p=None) a: 样本 size: 采样元素个数,None为采集一个 replace=True,则为有放回采样(一个值可以被采多次),否则是无放回的(一个值只能被采一次) p:表示a中每一项被采集的概率,None则为等概率

  1. import random
  2. from collections import Counter
  3. import numpy
  4. # 构造一批数据
  5. test_data = []
  6. for i in range(500):
  7. test_data.append(f"key_{i}")
  8. print(test_data)
  9. count_num = {}
  10. for j in range(1000):
  11. # random.sample 无放回随机取样
  12. # get_data = random.sample(test_data, 1)[0]
  13. # random.choices 等概率随机取样
  14. # get_data = random.choice(test_data)
  15. # 无放回等概率取样
  16. # get_data = random.choices(test_data, weights=None, cum_weights=None, k=1)[0]
  17. #
  18. get_data = numpy.random.choice(test_data, size=None, replace=False, p=None)
  19. # 统计被取样次数
  20. count_num[get_data] = count_num.get(get_data, 0) + 1
  21. print("#" * 100)
  22. print(count_num)
  23. print("#" * 100)
  24. most_key = Counter(count_num).most_common()[0]
  25. print(most_key)