What is the pythonic (can use numpy) way to generate a random range of length [range_length_min, range_length_max]
in the range [range_start, range_end]
?
Example:
- range_length_min = 5
- range_length_max = 10
- range_start = 0
- range_end = 2000
Allowed Solutions:
[53, 59]
[934, 941]
Invalid Solutions:
[92, 94]
because length of range is less thanrange_length_min
[92, 104]
because length of the range is more thanrange_length_max
[-4, 3]
because start of range is less thanrange_start
[1998, 2004]
because end of range is less thanrange_end
Current Solution:
start = np.random.randint(range_start, range_end - (range_max_length - range_min_length))
end = start + np.random.randint(range_min_length, range_max_length)
This gives the correct result but does not sample uniformly. The range_end - (range_max_length - range_min_length)
is a hack.
Aucun commentaire:
Enregistrer un commentaire