code: def create_halton_samples(order, dim=1, burnin=-1, primes=()):
      
      primes = list(primes)
      if not primes:
          prime_order = 10*dim
          while len(primes) < dim:
              primes = create_primes(prime_order)
              prime_order *= 2
      primes = primes[:dim]
      assert len(primes) == dim, "not enough primes"
  
      if burnin < 0:
          burnin = max(primes)
  
      out = numpy.empty((dim, order))
      indices = [idx+burnin for idx in range(order)]
      for dim_ in range(dim):
          out[dim_] = create_van_der_corput_samples(
              indices, number_base=primes[dim_])
      return out
docs: Create Halton sequence.
  
      For ``dim == 1`` the sequence falls back to Van Der Corput sequence.
  
      Args:
          order (int):
              The order of the Halton sequence. Defines the number of samples.
          dim (int):
              The number of dimensions in the Halton sequence.
          burnin (int):
              Skip the first ``burnin`` samples. If negative, the maximum of
              ``primes`` is used.
          primes (tuple):
              The (non-)prime base to calculate values along each axis. If
              empty, growing prime values starting from 2 will be used.
  
      Returns (numpy.ndarray):
          Halton sequence with ``shape == (dim, order)``.