隨機數

使用動態變數%Random%,我們可以得到 0 到 32767 之間的隨機整數。例如:

echo %random%

顯然,這會返回一個從 0 到 32767 的整數。但有時我們希望它在特定範圍內,比如從 1 到 100。

生成特定範圍內的隨機數

這樣做的基本方法如下所示。

set /a result=(%RANDOM%*max/32768)+min

其中 max 是可以生成的頂部數字,min 是可以生成的最小數字。請注意,你不會獲得任何小數,因為 set /a 會自動向下舍入。要生成十進位制隨機數,請嘗試以下操作:

set /a whole=(%RANDOM%*max/32768)+min
set /a decimal=(%RANDOM%*max/32768)+min
echo %whole%.%decimal%

生成大於 32767 的隨機數

如果你試試

set /a whole=(%RANDOM%*65536/32768)+1

你最有可能獲得奇數的隨機數。

要生成大於 32767 的數字,這是一個更好的方法。

set /a result=%random:~-1%%random:~-1%%random:~-1%%random:~-1%%random:~-1%%random:~-1%

前面的程式碼從每個%random%中提取 1 個字元。但這是故意的。

由於 random 號碼可以是一位數字,因此提取最後兩位數字將不起作用。這就是為什麼我們只提取最後一個字元。在這種情況下,我們有 6 %random:~-1%,產生 999999 的最大值,而 000000 的最小值,你可能需要調整它以滿足你的需要。

cmd.exe 根據 cmd 部分開始的時間生成種子,所以如果你幾乎同時開始 mutliple 部分,結果可能不夠隨機