Apa cara yang baik dan ringkas untuk menghindari nilai acak berurutan yang mendekati? misalnya, menggunakan rand
di Perl, tetapi memastikan perbedaan/distribusi minimum 0,2x antara nilai berurutan? Saya sudah mencoba beberapa ide seperti mengambil sampel ulang Rand jika nilainya mendekati, tetapi kemudian saya memerlukan skrip, dan saya tidak tahu bagaimana melakukannya dengan rapi dalam satu baris.
Konteksnya adalah saya sedang melakukan pencarian-penggantian menggunakan baris perintah dengan Perl. Idenya adalah bahwa di setiap baris, sebuah string diganti dengan nilai acak dari sebuah array.
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'
Outputnya kira-kira seperti ini:
: 3.4
: 5.6
: 5.6
: 1.2
Lihat bagaimana 5.6
berulang? Saya ingin menghindari hal itu. Dalam kasus penggunaan saya, array @numbers
berisi ~100 elemen. Saya ingin menyesuaikan rand @numbers
sehingga nilai array yang dipilih berjauhan.