Я пытаюсь создать цикл в Python с numpy, который даст мне переменную «times» с 5 номерами, генерируемыми случайным образом между 0 и 20. Однако я хочу, чтобы было одно условие: ни одно из различий между двумя соседними элементами в этом списке меньше 1. Каков наилучший способ достичь этого? Я попытался использовать последние две строки кода, но это, скорее всего, неверно.Ограничение генерации случайных чисел в Python
for j in range(1,6):
times = np.random.rand(1, 5) * 20
times.sort()
print times
da = np.diff(times)
if da.sum < 1: break
Например, для одной итерации, это не было бы хорошо:
4,25230915 4,36463992 10,35915732 12,39446368 18,46893283
Но что-то вроде этого было бы идеально:
1,47166904 6,85610453 10,81431629 12,10176092 15,53569052
Нулевой перевод другого ответа - это определенный плюс –
Спасибо, Ханнес, он отлично работает, и цифры отлично смотрятся! Я сделал x глобальным внутри функции и напечатал x снаружи, после передачи аргументов. – Spica
Нет, пожалуйста, не делайте этого, если вам действительно не нужно.Скорее всего, вы этого не сделаете :) Вместо этого назовите его как 'times = uniform_min_range (0, 20, 5, 1.0)', а затем 'print times'. –