第五十六章 Caché 函數大全 $RANDOM 函數 第五十六章 Caché 函數大全 $RANDOM 函數 大綱 描述 參數 示例

第五十六章 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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章