perl產生隨機數實現代碼

來源:互聯網
上載者:User

Perl利用函數rand()和srand()為隨機數(更確切的說是"偽隨機數")字串的產生提供了基本的工具。這些函數不是利用加密來提供安 全性的,所以不要利用它們為你金融資訊的加密。但是,如果你需要為你的下一個遊戲或者動態Web網站的新特性設計一個簡單的隨機數產生器,那麼 rand()和srand()可能就是你所需要的。

函數rand()是真正的隨機數產生器,而srand()會設定供rand()使用的隨機數種子。函數rand()會返回一個處於0和你所指定的數 值(預設為1)之間的分數。如果你在第一次調用rand()之前沒有調用srand(),那麼系統會為你自動調用srand()。

要注意,使用同種子相同的數調用srand()會導致相同的隨機數序列被產生。這在有的時候很方便,尤其在遊戲編程裡,你可能想要重複讓隨機事件按照精確的相同序列出現。

像下面這樣使用rand():

print "Your lucky number for today is: " . int(rand(100) + 1) . " ";
指令:rand
文法:rand($interger)
說明:常和函數srand搭配來取得一隨機數,如果沒有先宣告stand函數的話,則取出的常數值是一個固定值。這個文法會返回一個介於0和$interger之間的數值,如果$interger省略的話,則會返回一個介於0和1 的數值。

樣本:
srand; #要先宣告srand函數,才能產生隨機數的效果
$int=rand(10); #$int的值會大於0而且小於10如果希望產生的亂數是整數的話,就要再加上int #這個函數
$int=int(rand(10)); #$int的值是一個整數,且值在0和9之間
————————–
$int=rand(10);
$int=int(rand(10));
print "int is $int\n";

運行:

int is 9
再次運行:
int is 7
#可見rand取的是隨機數字

執行個體:我有一個7000行的文本資料,想每次從中隨機提取1280行,提取100次,最後產生100個1280行的文本,該如何做?各位請指點。

複製代碼 代碼如下:#!/usr/bin/perl
use strict;
use warnings;

my $data_file = "file1″;
print " Generating …\n";
open FH, "$data_file" or die "Can not open the required file $data_file !";
my @data = <FH>;
close FH;

for (1..100) {
my %hash;
while ((keys %hash) < 1280) {
$hash{int(rand($#data))} = 1;
}
open OUT, ">random$_.txt" or die "Can not open the required file random$_.txt !";
foreach (keys %hash) {
print OUT "$data[$_]";
}
close OUT;
}
print " Complete!\7″;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.