在 python 中生成随机样本的所有你需要的示例列表

长按关注《Python学研大本营》,加入读者群,分享更多精彩 扫码关注《Python学研大本营》,加入读者群,分享更多精彩

在这篇博客中,我将演示如何根据不同的需求在python中生成样本随机数。使用随机和 Numpy。

import random
import numpy as np

python 50个随机整数 python怎么随机整数_python

内容

  • 场景1:获取随机整数
  • 场景2:获取带小数的随机数
  • 场景3:获取具有已知统计数据/分布的随机数
  • 场景4:使用现有的数字列表

场景一:获取随机整数

如果您只需要 0 到 10 之间的随机整数:

random.randint(0, 10)

# 7

如果您需要 0 到 10 之间的随机整数列表(例如 15):

np.random.randint(0, 10, 15)

# array([4, 4, 3, 0, 0, 1, 6, 9, 5, 3, 1, 6, 8, 5, 9])

如果你想得到一个非常随机和超大的整数,你可以这样做:

import time
int(time.time())

# 1669855560

场景二:获取带小数的随机数

获取 0 到 1 之间的随机数:

random.random()

# 0.4353251333114442

获取 0 到 10 之间的随机数:

random.uniform(0, 10)

# 9.210714292877288

如果您需要 0 到 10 之间的随机数列表(例如 5):

np.random.uniform(0, 10, 5)

# array([8.70816807, 5.13392407, 0.4998664 , 5.97627955, 2.15261284])

场景三:获取具有已知统计数据/分布的随机数

如果您已经知道所需样本的均值、众数和最大值,您可能想尝试三角函数。它有一个很酷的参数,称为模式:分布峰值出现的值。该值必须满足条件 left <= mode <= right。如果我们将它设置为 5,样本将更有可能出现在 5 左右。

np.random.triangular(0, 5, 10, 5) # left, mode, right, sample

# [3.7525956  5.16902974 3.79206193 8.46765312 6.23403873]

如果您想从二项分布中抽取样本,您可以尝试一个名为binomial的函数。如果我们设置 n = 20,p = 0.25,大小为 2000:

sample = np.random.binomial(20, 0.25, 2000)
import matplotlib.pyplot as plt
plt.hist(sample)

python 50个随机整数 python怎么随机整数_深度学习_02

当您想从给定的均值 (50) 和标准差 (3) 生成随机数时:

random.normalvariate(50,3)

# 49.25030663269399

当您想创建一个随机数列表(例如 5)时,给定一个已知的均值 (50) 和一个标准差 (3):

[random.normalvariate(50,3) for _ in range(5)]

# [49.873333367806644, 45.72729827453879, 47.69029669578644, 
# 48.25661520735196, 47.26944802688148]

np.random.normal(50, 3, 5)

# array([47.18605431, 48.9894249 , 49.50258396, 49.85496526, 48.1503549 ])

当您想生成总和为某个值 (1) 的随机数列表(例如 10)时,您将需要名为dirichlet的函数。

sample = np.random.dirichlet(np.ones(10), size=1)
print(sample)
print(np.sum(sample))

# [[0.23988202 0.08378129 0.19439318 0.04282444 0.01568082 0.04033996
#   0.07864523 0.10856321 0.18118435 0.0147055 ]]

# 1.0000000000000002

场景四:使用现有的数字列表

假设我们有一个数字列表,如下所示:

sample = np.random.randint(0, 10, 20)
sample

# array([0, 3, 1, 1, 0, 2, 5, 1, 0, 7, 3, 6, 6, 9, 3, 7, 0, 5, 6, 6])

如果你想随机洗牌样本:

np.random.shuffle(sample)
sample

# array([1, 3, 7, 5, 3, 0, 6, 0, 0, 1, 3, 2, 9, 6, 6, 7, 6, 1, 5, 0])

如果要从样本中随机获取 5 个元素:

for _ in  range ( 5 ): 
  print (np.random.choice(sample)) 

# 1 
# 7 
# 6 
# 9 
# 0

如果你想随机排列一个序列或返回一个排列的范围,下面是你可以做什么的几个例子:

np.random.permutation( 10 ) 

# array([2, 5, 0, 3, 1, 7, 8, 4, 6, 9])

 np.random.permutation(sample) 

# array([2, 0, 3 , 9, 6, 0, 3, 6, 5, 5, 6, 0, 7, 6, 0, 1, 1, 1, 7, 3])

 arr = np.arange( 9 ).reshape(( 3 , 3 )) 
np.random.permutation(arr) 

# array([[3, 4, 5], 
# [6, 7, 8], 
# [0, 1, 2]])

结论

这篇简短的博客总结了许多在 python 中生成随机数的流行技术。了解这些技巧应该可以帮助您根据需要生成虚拟数据。