4.1.18 亂數

rand 函式提供亂數機制,如下:

語法:

rand 某數  (傳回介於 0 ~ 某數之間的正數)

或 

rand       (傳回 0 ~ 1 之間的正數)

用例:

#! /usr/bin/perl

$num1 = rand 100; # 傳回 0 到 100 之間的隨機正數。

$num2 = rand; # 傳回 0 ~ 1 之間的隨機正數

print $num1,"\n", $num2, "\n";

# 可能輸出:

41.672293825923
0.216416427956091

我們經常需要的是傳回整數,int 這個函式可以幫我們做到:

#! /usr/bin/perl

while (1) {
	$num = int(rand 42) + 1; 
	print $num, "\n";
	sleep 1;
}

# 傳回 1 ~ 42 隨機一個正整數。若欲停止,請按 Ctrl + C 鍵。
# 可能輸出:

23
35
13
29
27
21
25
1
40
31
27
18
16

另,為了使每次執行亂數程式時,都能有不同的結果,Perl 另外提供亂數種子 srand 這個函式。

註:新版的 Perl 已改善此點,不必使用 srand,也可使每次亂數結果不同。

用例:


srand 

或 

srand 任意數字

例 srand 5;

用例:

#! /usr/bin/perl

# 設亂數種子,以當時的時間做為亂數種子
srand time();

while (1) {
	$num = int(rand 42) + 1; 
	print $num, "\n";
	sleep 1;
}