python产生低差异序列的实现
两种实现方法
code:
import numpy as np
import openturns as ot
import ghalton
# Create a sequence of 3 points of 2 dimensions
sequence = ot.LowDiscrepancySequence(ot.HaltonSequence(2))
d = sequence.generate(3)
d = np.array(d)# Convert a data type to an array
print(type(d))
# Create a sequence of 3 points of 2 dimensions by ghalton
sequence1 = ghalton.Halton(2)
points = sequence1.get(3)
print(points)
result:
随机序列和低差异序列对比
code:
import numpy as np
import openturns as ot
import matplotlib.pyplot as plt
# Create a random number of 3 points of 2 dimensions
rand_data = np.random.uniform(low=0.0, high=1.0, size=(1000,2))
# Create a sequence of 3 points of 2 dimensions
sequence = ot.LowDiscrepancySequence(ot.HaltonSequence(2))
halton_data = sequence.generate(1000)
halton_data = np.array(halton_data)# Convert a data type to an array
plt.figure()
plt.plot(rand_data[:,0],rand_data[:,1],'bo',)
plt.title('Uniform')
plt.figure()
plt.plot(halton_data[:,0],halton_data[:,1],'ro',)
plt.title('Halton')
plt.show()
result: