A comprehensive stress testing data generator with cryptographically secure randomness.
- Fixed edge cases in graph generation (weighted graph parameter handling)
- Improved performance for large-scale random generation
- Enhanced documentation and examples
- Fixed import paths and module organization
- Added better error handling for invalid parameters
- Optimized random number generation for cryptographic security
- Initial stable release with core functionality
- Arrays: Random arrays, permutations, matrices, pairs, subsets, partitions, and specialized patterns (strictly increasing/decreasing, arithmetic/geometric progressions)
- Numbers: Random integers, floats, weighted random selection, exclusion sets
- Strings: Random strings with case control, palindromes, alphanumeric strings, custom alphabets
- Graphs: Trees, simple graphs, weighted graphs, directed graphs, DAGs, bipartite graphs, cycles, complete graphs, regular graphs
- Secure Randomness: Uses
secrets.SystemRandom()instead of Python's predictable MT19937 algorithm
pip install cpstressgit clone https://github.com/sharpsalt/cpstress.git
cd cpstress
pip install -e .from cpstress.generators import gen_arrays, gen_numbers, gen_strings, gen_graphs
# Generate random array
arr = gen_arrays.random(10, 1, 100)
print(arr)
# Generate random integer
num = gen_numbers.random_int(1, 1000)
print(num)
# Generate random string
s = gen_strings.random(15, CaseType.Mixed)
print(s)
# Generate tree
tree = gen_graphs.tree(10)
print(tree)random(len, l, r, unique=False, sorted=False)- Random arraypermutation(n)- Random permutationmatrix(rows, cols, l, r)- Random matrixpairs(len, l1, r1, l2, r2, ordered=False)- Random pairssubset(l, r, k, sorted=False)- Random subsetpartition(sum, k, min_val, max_val)- Partition sum into k partsstrictly_increasing/decreasing()- Monotonic sequencesarithmetic_progression/geometric_progression()- Special sequencesbit_array(len, prob_one=0.5)- Binary array
random_int(l, r)- Random integerrandom_real(l, r)- Random floatrandom_range(l, r, count)- List of random numbersrandom_exclude(l, r, exclude_set)- Random excluding valuesrandom_weighted(values, weights)- Weighted random selectionrandom_real_exclude()- Random float with exclusion range
random(len, case_type)- Random stringpalindrome(len, case_type)- Random palindromerandom_alphanum(len, letters, digits, case_type)- Alphanumeric stringrandom_custom(len, alphabet)- String from custom alphabetrandom_strings(count, len, case_type)- Multiple random stringspalindromes(count, len, case_type)- Multiple palindromes
tree(n, zero_based=False)- Random treesimple_graph(n, m)- Random undirected graphweighted_graph(n, m, min_w, max_w)- Weighted graphdirected_graph(n, m)- Directed graphdag(n, m)- Directed acyclic graphbipartite(n1, n2, m)- Bipartite graphcycle(n),star(n),complete(n),regular(n, d)- Special graphs
All random number generation uses Python's secrets.SystemRandom(), which provides cryptographically strong randomness that cannot be easily determined or predicted, unlike the standard random.Random() module.
This project is licensed under the MIT License - see LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
Srijan Verma - GitHub Profile