Random產生隨機數問題

2022-02-13 01:22:48 字數 758 閱讀 2277

昨天在開發時發現這個問題,在同乙個for迴圈內,通過random多次產生隨機數得到的隨機數竟是一樣的!以前還真沒發現這個問題。

以下是簡化的**,如果將random定義在for迴圈外面則不會有問題(猜測random與時間有關且存在固定的演算法獲取隨機數),但實際開發中一般會把產生隨機數封裝為乙個方法,呼叫的時候情況就與下面的一樣了。

stringbuilder builder = new stringbuilder();

for (int i = 0; i < 200; i++)

response.write(builder.tostring());

解決方案都是從隨機種子下手,一般見到有下面兩種:

stringbuilder builder = new stringbuilder();

for (int i = 0; i < 200; i++)

response.write(builder.tostring());

static int getrandomseed()

stringbuilder builder = new stringbuilder();

for (int i = 0; i < 200; i++)

response.write(builder.tostring());

通過stopwatch測試,這兩種方法的速度幾乎沒有區別,與不使用隨機種子的方式在時間消耗上也沒有差別,可以放心的使用,第二種更簡捷!

Random 產生隨機數

幾乎模組中所有函式都依賴於基本函式random 它在半開放範圍 0.0,1.0 內產生乙個統一的隨機浮點數。1.基本使用 var num parseint math.random 10 取0到10之間的整數 但不包括10 2.在指定範圍內產生多個不同的隨機數 var num parseint mat...

Random快速連續產生相同隨機數

random類是乙個產生偽隨機數字的類,它的建構函式有兩種,乙個是直接new random 另外乙個是new random int32 前者是根據觸發那刻的系統時間做為種子,來產生乙個隨機數字,後者可以自己設定觸發的種子,一般都是用uncheck int datetime.now.ticks 做為引...

產生隨機數 arc4random 函式

問題 產生一組 四個 隨機數。要求 每組隨機數隨機生成數字 字母 分大小寫 char vercode 定義隨機數字元 int length sizeof vercode sizeof char 計算陣列長度 int one arc4random length 定義四個隨機數 int two arc4...