bash - 从 int 数组的前 30% 中随机选择

标签 bash random

假设我有一个 int 数组

array=( 1 2 3 4 5 6 7 8 9 10 )

如何从数组的前 30% 中随机选择一个数字,即数字 8、9 或 10。

我知道在数组中完全随机选择一个数字是:

${array[RANDOM % ${#array[@]}]}

但是我不知道如何在数组的一定百分比中选择一个随机元素,

最佳答案

  1. Sort the array ,反过来:

    IFS=$'\n' sorted=($(sort -rn <<<"${array[*]}"))
    
  2. 计算出符合条件的元素数量:

    n=$((${#sorted[@]}*3/10))
    
  3. 选择一个随机元素:

    val=${sorted[RANDOM % $n]}
    

关于bash - 从 int 数组的前 30% 中随机选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23305426/

相关文章:

linux - (Ubuntu) Linux : Is it possible to find out if you're running inside §script§ command?

bash - 将图像 A 的一圈复制到图像 B 中

c++ - 具有相同种子的 rand() 函数是否会在不同的 PC 上给出相同的随机数?

javascript - 在 Javascript 和 HTML 中显示图像

bash - 处理可选函数参数

bash - 为什么在使用 'set -x' 调用时会得到不同的 bash 脚本结果,我该如何解决?

swift - 如何使用 Xcode 转换器创建 USDZ 文件?

python - `numpy.random.normal` 在不同的系统上生成不同的数字

c++ - 随机生成器测试。错误在哪里?

google-maps - 非矩形空间中的随机 GPS 坐标