Python的random.vonmisesvariate函数简介
在Python的random模块中,提供了一个vonmisesvariate函数,用于生成符合德国数学家 von Mises—Fisher 分布(von Mises distribution )的随机数。
von Mises—Fisher 分布在采样的时候很有用,比如在网络中的随机游走过程中就会使用到von Mises—Fisher 分布随机采样。
Python的random.vonmisesvariate函数基本使用方法
其基本调用格式为:
random.vonmisesvariate(mu, kappa)
其中:
- mu:均值参数,float类型
- kappa:集中度参数,float类型
函数返回一个随机数。
注意:如果kappa越小,分布越分散,反之分布越集中。
Python的random.vonmisesvariate函数使用实例
下面提供两个应用实例。
实例一:生成von Mises分布随机数
import random
import matplotlib.pyplot as plt
mu = 0
kappa = 2.0
size = 1000
data = [random.vonmisesvariate(mu, kappa) for i in range(size)]
plt.hist(data, bins=50,normed=True)
plt.title("von Mises Fisher Distribution")
plt.show()
上述代码中的参数mu和kappa可以修改,以观察对应的随机分布变化。
实例二:将von Mises分布数据可视化
通常情况下,我们需要以某种形式展现出数据的特征。下面是生成的von Mises分布数据的可视化展示。
import random
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
mu = [2.0, 2.0, 2.0]
kappa = [1.0, 5.0, 10.0]
fig = plt.figure(figsize=(15, 5))
for i in range(3):
ax = fig.add_subplot(1, 3, i+1, projection='3d')
x = np.zeros(1000)
y = np.zeros(1000)
z = np.zeros(1000)
for j in range(1000):
x[j], y[j], z[j] = np.random.vonmises(mu[i], kappa[i], 3)
ax.scatter(x, y, z, alpha=0.5)
ax.set_title(f"mu={mu[i]}, kappa={kappa[i]}")
plt.show()
该代码将生成三个具有不同均值(mu)和集中度(kappa)的von Mises分布随机数,并且三个分布数据可视化图也呈现出不同的聚集、集中程度。