美文网首页
第五十六章 Caché 函数大全 $RANDOM 函数

第五十六章 Caché 函数大全 $RANDOM 函数

作者: Cache技术分享 | 来源:发表于2020-10-16 08:42 被阅读0次

    第五十六章 Caché 函数大全 $RANDOM 函数

    返回指定范围内的伪随机整数值。

    大纲

    $RANDOM(range)
    $R(range)
    

    参数

    • range 一个非零正整数,用于指定可能的随机数范围的上限。

    描述

    $RANDOM返回介于0和range-1(含)之间的伪随机整数值。因此$RANDOM(3)返回0、1、2,但不返回3。返回的数字在指定范围内均匀分布。

    $RANDOM对于大多数用途来说是足够随机的。需要严格随机值的应用程序应使用%SYSTEM.Encryption类的GenCryptRand()方法。

    参数

    range

    此值指定可能的随机数范围的上限;最高的随机数是范围减1。范围值可以是非零正整数值,整数变量的名称或任何计算为非零正整数的有效ObjectScript表达式。最大范围值为1E17(100000000000000000);指定超出此最大值的值将导致错误。 $RANDOM(1)有效,但始终返回0。$RANDOM(0)导致<FUNCTION> 错误。

    示例

    以下示例返回一个从0到24(含)的随机数。

    DHC-APP>WRITE $RANDOM(25)
    1
    DHC-APP>WRITE $RANDOM(25)
    21
    

    要返回带有小数部分的随机数,可以使用串联运算符(_)或加法运算符(+),如以下示例所示:

    /// d ##class(PHA.TEST.Function).RANDOM()
    ClassMethod RANDOM()
    {
        SET x=$RANDOM(10)_$RANDOM(10)/10
        WRITE !,x
        SET y=$RANDOM(10)+($RANDOM(10)/10)
        WRITE !,y
    }
    
    DHC-APP>d ##class(PHA.TEST.Function).RANDOM()
     
    3.9
    6.1
    DHC-APP>d ##class(PHA.TEST.Function).RANDOM()
     
    9.1
    5.2
    

    该程序返回一个小数位数,范围在.0到9.9(含)之间的数字。使用任一运算符,Caché都会删除任何前导零和尾随零(如果小数部分为零,则删除小数点)。但是,如果两个$RANDOM函数都返回零(0和.0),则Caché返回零(0)。

    以下示例模拟了两个骰子的掷骰:

    /// d ##javaclass(PHA.TEST.Function).RANDOM1()
    ClassMethod RANDOM1()
    {
        FOR {
            READ "Roll dice? ",reply#1
            IF "Yy"[reply,reply'="" {
                WRITE !,"Pair of dice: "
                WRITE $RANDOM(6)+1,"+",$RANDOM(6)+1,! 
            } ELSE { 
                QUIT 
            }
        }
    }
    
    DHC-APP>d ##class(PHA.TEST.Function).RANDOM1()
    Roll dice? y
    Pair of dice: 1+6
    DHC-APP>d ##class(PHA.TEST.Function).RANDOM1()
    Roll dice? y
    Pair of dice: 6+1
    

    返回0-256 ascii 所以有一些字符显示乱码

    w ##class(%system.Encryption).GenCryptRand(8,0) 
    

    8位随机数字

    w ##class(%SYSTEM.Encryption).GenCryptToken()
    

    相关文章

      网友评论

          本文标题:第五十六章 Caché 函数大全 $RANDOM 函数

          本文链接:https://www.haomeiwen.com/subject/cqoapktx.html