Chức năng rand() trong Perl

Perl ngôn ngữ đã được tích hợp trong chức năng rand(). Chức năng này được sử dụng để tạo ra số ngẫu nhiên.

Đây là một ví dụ:

▶ Run
#!/usr/bin/perl

print rand(10);

Này, chương trình hiển thị một số ngẫu nhiên giữa 0 (bao gồm) để 10 (nhưng không bao gồm số 10).

Ví dụ, chương trình này có thể là số 2.61509101678715.

Hạn chế

Chức năng rand() trả về một ảo qua số. Trong một số tình huống, theo một số điều kiện nó có thể dự đoán những gì giá trị trả về chức năng rand(). Từ đây, sau đó chức năng này không được mã hóa mạnh mẽ. Chức năng này không nên dùng mật mã, nhưng để nhận được một số ngẫu nhiên giá trị ra khỏi phạm vi mật mã-tính năng này là lý tưởng.

Lập luận

my $value1 = rand();
my $value2 = rand($number);

Chức năng rand() có thể được sử dụng mà không có bất kỳ lý luận hay cho cô ấy chính xác một cuộc tranh luận. Các chức năng hy vọng một số như lập luận giá trị. Nếu các chức năng nhận được không phải là một số cô ấy dẫn anh ta đến số.

Sử dụng cùng một cuộc tranh cãi

Khi sử dụng số tích cực như lập luận của một chức năng rand() trả về số lớn hơn hoặc bằng 0 và nghiêm ít hơn lập luận của mình. Ví dụ, nếu bạn sử dụng 100trong như lập luận, bạn có thể có được số 72.9877832186506 như các chức năng quả rand().

Bạn có thể sử dụng phân lập luận. Nếu bạn định rand(1.5), kết quả là một số lượng lớn hơn hay bằng 0 và nghiêm ít 1.5.

Khi bạn sử dụng một số âm như lập luận về chức năng một số đó nghiêm trọng hơn những quy định số ít hơn hoặc bằng 0.

Sử dụng nếu không có tranh cãi

Bằng cách sử dụng rand() không có lý lẽ là ứng tương tự như vậy để sử dụng nó với lập luận 1. Chức năng rand() sẽ trở về một số đó là lớn hơn hoặc bằng 0 và nghiêm ít 1, ví dụ 0.813735968739824.

▶ Run
#!/usr/bin/perl

print rand(1);

Xin lưu ý, nếu bạn không chỉ là một cuộc tranh cãi, các lập luận là số 1, không những giá trị của mặc định biến $_. Nếu bạn muốn sử dụng $_ là giá trị rand(), nó là cần thiết để viết một cách rõ ràng:

▶ Run
#!/usr/bin/perl

$_ = 3;

print rand($_);

0 như lập luận giá trị

Số 0 là giá trị đối số của các chức năng rand() là một trường hợp đặc biệt. rand(0) là giống như rand(1). Các chức năng sẽ trở về một số lớn hơn hoặc bằng 0 và nghiêm nhỏ hơn 1.

Sử dụng nhiều hơn một cuộc tranh cãi

Nếu các chức năng chuyển rand() nhiều hơn một cuộc tranh luận, nó sẽ lỗi:

Too many arguments for rand at script.pl line 3, near "2)"
Execution of script.pl aborted due to compilation errors.

Tài liệu chính thức

Đây là kết quả của sự chỉ huy perldoc -f rand:

       rand EXPR
       rand    Returns a random fractional number greater than or equal to 0
               and less than the value of EXPR.  (EXPR should be positive.)
               If EXPR is omitted, the value 1 is used.  Currently EXPR with
               the value 0 is also special-cased as 1 (this was undocumented
               before Perl 5.8.0 and is subject to change in future versions
               of Perl).  Automatically calls "srand" unless "srand" has
               already been called.  See also "srand".

               Apply "int()" to the value returned by "rand()" if you want
               random integers instead of random fractional numbers.  For
               example,

                   int(rand(10))

               returns a random integer between 0 and 9, inclusive.

               (Note: If your rand function consistently returns numbers that
               are too large or too small, then your version of Perl was
               probably compiled with the wrong number of RANDBITS.)

               "rand()" is not cryptographically secure.  You should not rely
               on it in security-sensitive situations.  As of this writing, a
               number of third-party CPAN modules offer random number
               generators intended by their authors to be cryptographically
               secure, including: Data::Entropy, Crypt::Random,
               Math::Random::Secure, and Math::TrulyRandom.

Các bài viết khác