Каков хороший, краткий способ избежать последовательных случайных значений, которые близки? например, используя rand
в Perl, но обеспечивая минимальную разницу/распределение 0,2x между любыми последовательными значениями? Я попробовал несколько идей, таких как повторная выборка rand, если значения близки, но тогда мне нужен сценарий, и я не знаю, как сделать это чисто в одну строку.
Контекст в том, что я выполняю поиск-замену, используя командную строку с perl. Идея состоит в том, что в каждой строке строка заменяется случайным значением из массива.
echo ":z:z:z:" | tr ':' '\n' | perl -pe '@numbers=(1.2, 3.4, 5.6, 7.8); $number = $numbers[rand @numbers]; s/z/" : ".( $number )/ge'
Вывод примерно такой:
: 3.4
: 5.6
: 5.6
: 1.2
Видите, как повторяется 5.6
? Я хочу избежать этого. В моем случае массив @numbers
содержит ~100 элементов. Я хочу настроить rand @numbers
так, чтобы выбранные значения массива были дальше друг от друга.