2012-01-05 53 views
0

我正在尋找一種方法來使用文件路徑作爲輸入生成一個4位數的隨機數。我試圖爲我的機器上的每個軟件安裝賦予唯一的名稱,名稱是software_product_name + 4 digit random number。有兩次安裝相同的軟件是非常罕見的,但如果是這種情況,我不想結束相同的名稱。我有一種不同的方式來獲取軟件名稱。如何在Perl中使用字符串作爲種子生成一個N位數的隨機數

有沒有一種有效的方法,我可以生成4位數的隨機數,這將導致不同的路徑數量不同?

+1

請幫助我們通過展示您的嘗試來幫助您。 – Zaid 2012-01-05 13:02:54

+2

最簡單的方法是對路徑名稱進行散列,並將結果mod 10000. – 2012-01-05 13:03:29

+0

爲什麼不使用遞增數字而不是隨機數字? – RobEarl 2013-08-24 09:59:58

回答

0

如果你考慮一下,你不能這樣做,你不應該這樣做。你想生成一些沒有碰撞的東西,所以你可以區分不同的安裝。您無法區分無限數量的可能路徑和四位數字。

這聽起來像你的軟件需要足夠聰明,不要吹走現有的目錄,並安裝在用戶定義的路徑。

或者,您只需生成任意隨機數並檢查它是否已被使用。所以你不在乎這個數字是什麼,你不需要任何輸入來生成它。

2
#!/usr/bin/perl 

print "Content-type: text/html\n\n"; 

my @Chars = ('1'..'9'); 
my $Length = 4; 
my $Number = ''; 

for (1..$Length) { 
$Number .= $Chars[int rand @Chars]; 
} 

print $Number; 
相關問題