def METHOD_NAME(cls, op):
    tensor = op.outputs[0]
    chunk_size = tensor.extra_params.raw_chunk_size or options.chunk_size
    nsplits = decide_chunk_sizes(
        tensor.shape[:-1], chunk_size, tensor.dtype.itemsize
    )
    nsplits += ((len(op.alpha),),)
    idxes = list(itertools.product(*[range(len(s)) for s in nsplits]))
    seeds = gen_random_seeds(len(idxes), np.random.RandomState(op.seed))
    out_chunks = []
    for seed, idx, shape in zip(seeds, idxes, itertools.product(*nsplits)):
        inputs = [inp.cix[idx] for inp in op.inputs]
        size = shape[:-1]
        chunk_op = op.copy().reset_key()
        chunk_op._state = None
        chunk_op.seed = seed
        chunk_op.size = size
        out_chunk = chunk_op.new_chunk(inputs, shape=shape, index=idx)
        out_chunks.append(out_chunk)
    new_op = op.copy()
    return new_op.new_tensors(
        op.inputs, tensor.shape, chunks=out_chunks, nsplits=nsplits
    )