<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def transform(self, X=None, y=None):
 """ Transform an image using an Affine transform with zoom parameters randomly generated from the user-specified range. Return the transform if X=None. Arguments --------- X : ANTsImage Image to transform y : ANTsImage (optional) Another image to transform Returns ------- ANTsImage if y is None, else a tuple of ANTsImage types Examples -------- """

        # random draw in zoom range
        zoom_x = np.exp( random.gauss(
          np.log( self.zoom_range[0] ),
          np.log( self.zoom_range[1] ) ) )
        zoom_y = np.exp( random.gauss(
          np.log( self.zoom_range[0] ),
          np.log( self.zoom_range[1] ) ) )
        zoom_z = np.exp( random.gauss(
          np.log( self.zoom_range[0] ),
          np.log( self.zoom_range[1] ) ) )
        self.params = (zoom_x, zoom_y, zoom_z)

        tx = Zoom3D((zoom_x,zoom_y,zoom_z),
                    reference=self.reference,
                    lazy=self.lazy)

        return tx.transform(X,y)