में ksh
, बैश, Zsh, यश या बिजीबॉक्स sh
:
[ "$RANDOM" -lt 3277 ] && do_stuff
RANDOM
तो ऊपर (के पास) एक एक-इन-दस मौका देता कॉर्न, बैश, यश, जेड और बिजीबॉक्स गोले की विशेष चर, 0 और 32767 हर बार यह मूल्यांकन किया जाता है जो छद्म यादृच्छिक दशमलव पूर्णांक मान पैदा करता है।
आप इसका उपयोग एक ऐसे समारोह का निर्माण करने के लिए कर सकते हैं जो आपके प्रश्न में वर्णित है, कम से कम बैश में:
function chance {
[[ -z $1 || $1 -le 0 ]] && return 1
[[ $RANDOM -lt $((32767 / $1 + 1)) ]]
}
तर्क प्रदान करना भूल जाना, या अमान्य तर्क प्रदान करना, 1 का परिणाम chance && do_stuff
देगा , इसलिए कभी नहीं do_stuff
।
यह "1 इन एन " के लिए सामान्य सूत्र का उपयोग करता है $RANDOM
, जो कि [[ $RANDOM -lt $((32767 / n + 1)) ]]
, 32768 मौका में (6732767 / n 32 + 1) दे रहा है । मान n
जिनमें से 32768 के कारक नहीं हैं, संभावित मानों की श्रेणी में असमान विभाजन के कारण पूर्वाग्रह का परिचय देते हैं।