วิธีที่ดีและรัดกุมในการหลีกเลี่ยงค่าสุ่มตามลำดับซึ่งใกล้เคียงกันคืออะไร เช่นใช้ rand
ใน Perl แต่รับประกันความแตกต่าง / การกระจายขั้นต่ำ 0.2x ระหว่างค่าลำดับใด ๆ ฉันได้ลองใช้แนวคิดบางอย่าง เช่น การสุ่มตัวอย่าง rand ใหม่หากค่าใกล้เคียงกัน แต่ฉันต้องการสคริปต์ และฉันไม่รู้ว่าจะทำอย่างไรให้หมดจดในบรรทัดเดียว
บริบทคือฉันกำลังทำการค้นหาแทนที่โดยใช้ commandline ด้วย 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
เพื่อให้ค่าอาร์เรย์ที่เลือกอยู่ห่างกันมากขึ้น