def generateNumbers(self, numSequences, sequenceLength, sharedRange=None):
numbers = []<EOL>if sharedRange:<EOL><INDENT>sharedStart, sharedEnd = sharedRange<EOL>sharedLength = sharedEnd - sharedStart<EOL>sharedNumbers = range(numSequences * sequenceLength,<EOL>numSequences * sequenceLength + sharedLength)<EOL><DEDENT>for i in xrange(numSequences):<EOL><INDENT>start = i * sequenceLength<EOL>newNumbers = np.array(range(start, start + sequenceLength), np.uint32)<EOL>self._random.shuffle(newNumbers)<EOL>newNumbers = list(newNumbers)<EOL>if sharedRange is not None:<EOL><INDENT>newNumbers[sharedStart:sharedEnd] = sharedNumbers<EOL><DEDENT>numbers += newNumbers<EOL>numbers.append(None)<EOL><DEDENT>return numbers<EOL>
@param numSequences   (int)   Number of sequences to return,
                              separated by None
@param sequenceLength (int)   Length of each sequence
@param sharedRange    (tuple) (start index, end index) indicating range of
                              shared subsequence in each sequence
                              (None if no shared subsequences)
@return (list) Numbers representing sequences