zoukankan      html  css  js  c++  java
  • shell产生随机数

    #!/bin/bash
    
    # 每次调用$RANDOM都会返回不同的随机整数. 
    # 一般范围为: 0 - 32767 (有符号的16-bit整数).
    
    MAXCOUNT=10
    count=1
    
    echo
    echo "$MAXCOUNT random numbers:"
    echo "-----------------"
    while [ "$count" -le $MAXCOUNT ]      # 产生10 ($MAXCOUNT)个随机整数.
    do
      number=$RANDOM
      echo $number
      let "count += 1"  # 增加计数.
    done
    echo "-----------------"
    
    # 如果你需要在特定范围内产生随机整数, 那么使用'modulo'(模)操作
    # 取模操作会返回除法的余数.
    
    RANGE=500
    
    echo
    
    number=$RANDOM
    let "number %= $RANGE"
    #           ^^
    echo "Random number less than $RANGE  ---  $number"
    
    echo
    
    
    
    #  如果你需要产生一个大于某个下限的随机整数.
    #+ 那么建立一个test循环来丢弃所有小于此下限值的整数. 
    
    FLOOR=200
    
    number=0   #初始化
    while [ "$number" -le $FLOOR ]
    do
      number=$RANDOM
    done
    echo "Random number greater than $FLOOR ---  $number"
    echo
    
       # 让我们对上边的循环尝试一个小改动, 如下:
       #       let "number = $RANDOM + $FLOOR"
       # 这将不再需要那个while循环, 并且能够运行的更快.
    
    
    # 结合上边两个例子, 来在指定的上下限之间来产生随机数.
    number=0   #initialize
    while [ "$number" -le $FLOOR ]
    do
      number=$RANDOM
      let "number %= $RANGE"  # 让$number依比例落在$RANGE的范围内.
    done
    echo "Random number between $FLOOR and $RANGE ---  $number"
    echo
    
    
    
    # 产生二元值, 就是, "true""false" 两个值.
    BINARY=2
    T=1
    number=$RANDOM
    
    let "number %= $BINARY"
    #  注意 let "number >>= 14"    将会给出一个更好的随机分配.if [ "$number" -eq $T ]
    then
      echo "TRUE"
    else
      echo "FALSE"
    fi  
    
    echo
    
    
    # 抛骰子.
    SPOTS=6   # 模6给出的范围是0 - 5.
              # 加1会得到期望的范围1 - 6.
    die1=0
    die2=0
    
    # 每次抛骰子, 都会给出均等的机会.
    
        let "die1 = $RANDOM % $SPOTS +1" # 抛第一次.
        let "die2 = $RANDOM % $SPOTS +1" # 抛第二次.
        #  上边的算术操作中, 哪个具有更高的优先级呢 --
        #+ 模(%) 还是加法操作(+)?
    
    
    let "throw = $die1 + $die2"
    echo "Throw of the dice = $throw"
    echo
    
    
    exit 0
  • 相关阅读:
    对GDI+绘制圆弧接口的理解
    陈灯可重用代码管理器(插件版最新版本:3.2;桌面版最新版本:2.3)
    Apache OpenJPA 2.1.0 发布
    B3log Solo 0.2.5.1 发布了!
    Apache OpenJPA 2.1.0 发布
    jsoup 1.5.1 发布,超棒的HTML解析器
    程序员阿士顿的故事
    Web 是开源最大的成功
    Web 是开源最大的成功
    Python执行系统命令的方法 os.system(),os.popen(),commands renwofei423的个人空间 开源中国社区
  • 原文地址:https://www.cnblogs.com/zx3212/p/9089553.html
Copyright © 2011-2022 走看看