Perl Cd Bookshelf [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Perl Cd Bookshelf [Electronic resources] - نسخه متنی

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید



2.7. Generating Repeatable Random Number Sequences


2.7.1. Problem


Every time you run your program, you get a different sequence of
(pseudo-)random numbers. But you want a reproducible sequence, useful
when running a simulation, so you need Perl to produce the same set
of random numbers each time.

2.7.2. Solution


Use Perl's
srand function:

srand EXPR; # use a constant here for repeated sequences

2.7.3. Discussion


Making random numbers is hard. The best that computers can do,
without special hardware, is generate "pseudo-random" numbers, which
are evenly distributed in their range of values. These are generated
using a mathematical formula, which means that given the same
seed (starting point), two programs will
produce identical pseudo-random numbers.

The srand function creates a new seed for the
pseudo-random number generator. If given an argument, it uses that
number as the seed. If no argument is given, srand
uses a value that's reasonably difficult to guess as the seed.

If you call rand without first calling
srand yourself, Perl calls
srand for you, choosing a "good" seed. This way,
every time you run your program you'll get a different set of random
numbers. Ancient versions of Perl did not call
srand, so the same program always produced the
same sequence of pseudo-random numbers every time the program was
run. Certain sorts of programs don't want a different set of random
numbers each time; they want the same set. When you need that
behavior, call srand yourself, supplying it with a
particular seed:

srand( 42 ); # pick any fixed starting point

Don't call srand more than once in a program,
because if you do, you'll start the sequence again from that point.
Unless, of course, that's what you want.

Just because Perl tries to use a good default seed does not
necessarily guarantee that the numbers generated are
cryptographically secure against the most intrepid crackers.
Textbooks on cryptography are usually good sources of
cryptographically secure random number generators.

2.7.4. See Also


The srand function in
perlfunc(1) and Chapter 29 of
Programming Perl;
Recipe 2.6 and Recipe 2.8; Bruce
Schneier's excellent Applied Cryptography
(John Wiley & Sons)



2.6. Generating Random Numbers2.8. Making Numbers Even More Random




Copyright © 2003 O'Reilly & Associates. All rights reserved.

/ 875