Try the following in a PythonCreator:
import fmeobjects
def next_prime():
  def is_prime(num):
    "Checks if num is a prime value"
    for i in range(2,int(num**0.5)+1):
      if(num % i)==0: return False
    return True
  prime = 3
  while(1):
    if is_prime(prime):
      yield prime
    prime += 2
def vdc(n, base=2):
  vdc, denom = 0, 1
  while n:
    denom *= base
    n, remainder = divmod(n, base)
    vdc += remainder/float(denom)
 return vdc
def halton_sequence(size, dim):
  seq = []
  primeGen = next_prime()
  next(primeGen)
  for d in range(dim):
    base = next(primeGen)
    seq.append([vdc(i, base) for i in range(size)])
 return seq
class FeatureCreator(object):
  def __init__(self):
    pass ÂÂ
  def input(self,feature):
   Â
    size = int(FME_MacroValues['HALTON_SIZE'])
    dim = int(FME_MacroValues['HALTON_DIMENSION'])
    halton = halton_sequence(size, dim)
    if dim == 2:
      halton_points = zip(halton[0], halton[1])
    elif dim == 3:
      halton_points = zip(halton[0], halton[1], halton[2])
    else:
      raise IndexError('Only 2 or 3 dimensions are supported')
    for elem in halton_points:
      newFeature = fmeobjects.FMEFeature()
      if dim == 2:
        newFeature.setDimension(fmeobjects.FME_TWO_D)
      else:
        newFeature.setDimension(fmeobjects.FME_THREE_D)
      newFeature.addCoordinate(*elem)
      self.pyoutput(newFeature)
  def close(self):
    pass ÂÂ
You'll have to create the two published parameters HALTON_SIZE and HALTON_DIMENSION in your workspace. The output will be either a number (HALTON_SIZE) points of either 2D or 3D points.
And since the upgrade forum software seems to struggle with code blocks, here's a workspace template (FME 2018.1): halton_sequence.fmwt