CINXE.COM

srand - Perldoc Browser

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>srand - Perldoc Browser</title> <link rel="search" href="/opensearch.xml" type="application/opensearchdescription+xml" title="Perldoc Browser"> <link rel="canonical" href="https://perldoc.perl.org/functions/srand"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/styles/stackoverflow-light.min.css" integrity="sha512-cG1IdFxqipi3gqLmksLtuk13C+hBa57a6zpWxMeoY3Q9O6ooFxq50DayCdm0QrDgZjMUn23z/0PMZlgft7Yp5Q==" crossorigin="anonymous" /> <style> body { background: #f4f4f5; color: #020202; } .navbar-dark { background-image: -webkit-linear-gradient(top, #005f85 0, #002e49 100%); background-image: -o-linear-gradient(top, #005f85 0, #002e49 100%); background-image: linear-gradient(to bottom, #005f85 0, #002e49 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff005f85', endColorstr='#ff002e49', GradientType=0); background-repeat: repeat-x; } .navbar-dark .navbar-nav .nav-link, .navbar-dark .navbar-nav .nav-link:focus { color: #fff } .navbar-dark .navbar-nav .nav-link:hover { color: #ffef68 } #wrapperlicious { margin: 0 auto; font: 0.9em 'Helvetica Neue', Helvetica, sans-serif; font-weight: normal; line-height: 1.5em; margin: 0; padding: 0; } #wrapperlicious h1 { font-size: 1.5em } #wrapperlicious h2 { font-size: 1.3em } #wrapperlicious h3 { font-size: 1.1em } #wrapperlicious h4 { font-size: 0.9em } #wrapperlicious h1, #wrapperlicious h2, #wrapperlicious h3, #wrapperlicious h4, #wrapperlicious dt { color: #020202; margin-top: 1em; margin-bottom: 1em; position: relative; font-weight: bold; } #wrapperlicious a { color: inherit; text-decoration: underline } #wrapperlicious #toc { text-decoration: none } #wrapperlicious a:hover { color: #2a2a2a } #wrapperlicious a img { border: 0 } #wrapperlicious :not(pre) > code { color: inherit; background-color: rgba(0, 0, 0, 0.04); border-radius: 3px; font: 0.9em Consolas, Menlo, Monaco, monospace; padding: 0.3em; } #wrapperlicious dd { margin: 0; margin-left: 2em; } #wrapperlicious dt { color: #2a2a2a; font-weight: bold; margin-left: 0.9em; } #wrapperlicious p { margin-bottom: 1em; margin-top: 1em; } #wrapperlicious li > p { margin-bottom: 0; margin-top: 0; } #wrapperlicious pre { border: 1px solid #c1c1c1; border-radius: 3px; font: 100% Consolas, Menlo, Monaco, monospace; margin-bottom: 1em; margin-top: 1em; } #wrapperlicious pre > code { display: block; background-color: #f6f6f6; font: 0.9em Consolas, Menlo, Monaco, monospace; line-height: 1.5em; text-align: left; white-space: pre; padding: 1em; } #wrapperlicious dl, #wrapperlicious ol, #wrapperlicious ul { margin-bottom: 1em; margin-top: 1em; } #wrapperlicious ul { list-style-type: square; } #wrapperlicious ul ul { margin-bottom: 0px; margin-top: 0px; } #footer { font-size: 0.8em; padding-top: 0.5em; text-align: center; } #more { display: inline; font-size: 0.8em; } #perldocdiv { background-color: #fff; border: 1px solid #c1c1c1; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; margin-left: auto; margin-right: auto; padding: 3em; padding-top: 1em; max-width: 960px; } #moduleversion { float: right } #wrapperlicious .leading-notice { font-style: italic; padding-left: 1em; margin-top: 1em; margin-bottom: 1em; } #wrapperlicious .permalink { display: none; left: -0.75em; position: absolute; padding-right: 0.25em; text-decoration: none; } #wrapperlicious h1:hover .permalink, #wrapperlicious h2:hover .permalink, #wrapperlicious h3:hover .permalink, #wrapperlicious h4:hover .permalink, #wrapperlicious dt:hover .permalink { display: block; } </style> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-KVNWBNT5FB"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-KVNWBNT5FB'); gtag('config', 'UA-50555-3'); </script> </head> <body> <nav class="navbar navbar-expand-md navbar-dark bg-dark justify-content-between"> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <a class="navbar-brand" href="/"><img src="/images/perl_camel_30.png" width="30" height="30" class="d-inline-block align-top" alt="Perl Camel Logo"> Perldoc Browser</a> <div class="collapse navbar-collapse" id="navbarNav"> <ul class="navbar-nav mr-auto"> <li class="nav-item dropdown text-nowrap"> <a class="nav-link dropdown-toggle" href="#" id="dropdownlink-stable" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">5.40.1</a> <div class="dropdown-menu" aria-labelledby="dropdownlink-stable"> <a class="dropdown-item" href="/functions/srand">Latest</a> <div class="dropdown-divider"></div> <a class="dropdown-item active" href="/5.40.1/functions/srand">5.40.1</a> <a class="dropdown-item" href="/5.40.0/functions/srand">5.40.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.38.3/functions/srand">5.38.3</a> <a class="dropdown-item" href="/5.38.2/functions/srand">5.38.2</a> <a class="dropdown-item" href="/5.38.1/functions/srand">5.38.1</a> <a class="dropdown-item" href="/5.38.0/functions/srand">5.38.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.36.3/functions/srand">5.36.3</a> <a class="dropdown-item" href="/5.36.2/functions/srand">5.36.2</a> <a class="dropdown-item" href="/5.36.1/functions/srand">5.36.1</a> <a class="dropdown-item" href="/5.36.0/functions/srand">5.36.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.34.3/functions/srand">5.34.3</a> <a class="dropdown-item" href="/5.34.2/functions/srand">5.34.2</a> <a class="dropdown-item" href="/5.34.1/functions/srand">5.34.1</a> <a class="dropdown-item" href="/5.34.0/functions/srand">5.34.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.32.1/functions/srand">5.32.1</a> <a class="dropdown-item" href="/5.32.0/functions/srand">5.32.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.30.3/functions/srand">5.30.3</a> <a class="dropdown-item" href="/5.30.2/functions/srand">5.30.2</a> <a class="dropdown-item" href="/5.30.1/functions/srand">5.30.1</a> <a class="dropdown-item" href="/5.30.0/functions/srand">5.30.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.28.3/functions/srand">5.28.3</a> <a class="dropdown-item" href="/5.28.2/functions/srand">5.28.2</a> <a class="dropdown-item" href="/5.28.1/functions/srand">5.28.1</a> <a class="dropdown-item" href="/5.28.0/functions/srand">5.28.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.26.3/functions/srand">5.26.3</a> <a class="dropdown-item" href="/5.26.2/functions/srand">5.26.2</a> <a class="dropdown-item" href="/5.26.1/functions/srand">5.26.1</a> <a class="dropdown-item" href="/5.26.0/functions/srand">5.26.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.24.4/functions/srand">5.24.4</a> <a class="dropdown-item" href="/5.24.3/functions/srand">5.24.3</a> <a class="dropdown-item" href="/5.24.2/functions/srand">5.24.2</a> <a class="dropdown-item" href="/5.24.1/functions/srand">5.24.1</a> <a class="dropdown-item" href="/5.24.0/functions/srand">5.24.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.22.4/functions/srand">5.22.4</a> <a class="dropdown-item" href="/5.22.3/functions/srand">5.22.3</a> <a class="dropdown-item" href="/5.22.2/functions/srand">5.22.2</a> <a class="dropdown-item" href="/5.22.1/functions/srand">5.22.1</a> <a class="dropdown-item" href="/5.22.0/functions/srand">5.22.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.20.3/functions/srand">5.20.3</a> <a class="dropdown-item" href="/5.20.2/functions/srand">5.20.2</a> <a class="dropdown-item" href="/5.20.1/functions/srand">5.20.1</a> <a class="dropdown-item" href="/5.20.0/functions/srand">5.20.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.18.4/functions/srand">5.18.4</a> <a class="dropdown-item" href="/5.18.3/functions/srand">5.18.3</a> <a class="dropdown-item" href="/5.18.2/functions/srand">5.18.2</a> <a class="dropdown-item" href="/5.18.1/functions/srand">5.18.1</a> <a class="dropdown-item" href="/5.18.0/functions/srand">5.18.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.16.3/functions/srand">5.16.3</a> <a class="dropdown-item" href="/5.16.2/functions/srand">5.16.2</a> <a class="dropdown-item" href="/5.16.1/functions/srand">5.16.1</a> <a class="dropdown-item" href="/5.16.0/functions/srand">5.16.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.14.4/functions/srand">5.14.4</a> <a class="dropdown-item" href="/5.14.3/functions/srand">5.14.3</a> <a class="dropdown-item" href="/5.14.2/functions/srand">5.14.2</a> <a class="dropdown-item" href="/5.14.1/functions/srand">5.14.1</a> <a class="dropdown-item" href="/5.14.0/functions/srand">5.14.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.12.5/functions/srand">5.12.5</a> <a class="dropdown-item" href="/5.12.4/functions/srand">5.12.4</a> <a class="dropdown-item" href="/5.12.3/functions/srand">5.12.3</a> <a class="dropdown-item" href="/5.12.2/functions/srand">5.12.2</a> <a class="dropdown-item" href="/5.12.1/functions/srand">5.12.1</a> <a class="dropdown-item" href="/5.12.0/functions/srand">5.12.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.10.1/functions/srand">5.10.1</a> <a class="dropdown-item" href="/5.10.0/functions/srand">5.10.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.8.9/functions/srand">5.8.9</a> <a class="dropdown-item" href="/5.8.8/functions/srand">5.8.8</a> <a class="dropdown-item" href="/5.8.7/functions/srand">5.8.7</a> <a class="dropdown-item" href="/5.8.6/functions/srand">5.8.6</a> <a class="dropdown-item" href="/5.8.5/functions/srand">5.8.5</a> <a class="dropdown-item" href="/5.8.4/functions/srand">5.8.4</a> <a class="dropdown-item" href="/5.8.3/functions/srand">5.8.3</a> <a class="dropdown-item" href="/5.8.2/functions/srand">5.8.2</a> <a class="dropdown-item" href="/5.8.1/functions/srand">5.8.1</a> <a class="dropdown-item" href="/5.8.0/functions/srand">5.8.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.6.2/functions/srand">5.6.2</a> <a class="dropdown-item" href="/5.6.1/functions/srand">5.6.1</a> <a class="dropdown-item" href="/5.6.0/functions/srand">5.6.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.005_04/functions/srand">5.005_04</a> <a class="dropdown-item" href="/5.005_03/functions/srand">5.005_03</a> <a class="dropdown-item" href="/5.005_02/functions/srand">5.005_02</a> <a class="dropdown-item" href="/5.005_01/functions/srand">5.005_01</a> <a class="dropdown-item" href="/5.005/functions/srand">5.005</a> </div> </li> <li class="nav-item dropdown text-nowrap"> <a class="nav-link dropdown-toggle" href="#" id="dropdownlink-dev" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dev</a> <div class="dropdown-menu" aria-labelledby="dropdownlink-dev"> <a class="dropdown-item" href="/blead/functions/srand">blead</a> <a class="dropdown-item" href="/5.41.10/functions/srand">5.41.10</a> <a class="dropdown-item" href="/5.41.9/functions/srand">5.41.9</a> <a class="dropdown-item" href="/5.41.8/functions/srand">5.41.8</a> <a class="dropdown-item" href="/5.41.7/functions/srand">5.41.7</a> <a class="dropdown-item" href="/5.41.6/functions/srand">5.41.6</a> <a class="dropdown-item" href="/5.41.5/functions/srand">5.41.5</a> <a class="dropdown-item" href="/5.41.4/functions/srand">5.41.4</a> <a class="dropdown-item" href="/5.41.3/functions/srand">5.41.3</a> <a class="dropdown-item" href="/5.41.2/functions/srand">5.41.2</a> <a class="dropdown-item" href="/5.41.1/functions/srand">5.41.1</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.40.1-RC1/functions/srand">5.40.1-RC1</a> <a class="dropdown-item" href="/5.40.0-RC2/functions/srand">5.40.0-RC2</a> <a class="dropdown-item" href="/5.40.0-RC1/functions/srand">5.40.0-RC1</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.39.10/functions/srand">5.39.10</a> <a class="dropdown-item" href="/5.39.9/functions/srand">5.39.9</a> <a class="dropdown-item" href="/5.39.8/functions/srand">5.39.8</a> <a class="dropdown-item" href="/5.39.7/functions/srand">5.39.7</a> <a class="dropdown-item" href="/5.39.6/functions/srand">5.39.6</a> <a class="dropdown-item" href="/5.39.5/functions/srand">5.39.5</a> <a class="dropdown-item" href="/5.39.4/functions/srand">5.39.4</a> <a class="dropdown-item" href="/5.39.3/functions/srand">5.39.3</a> <a class="dropdown-item" href="/5.39.2/functions/srand">5.39.2</a> <a class="dropdown-item" href="/5.39.1/functions/srand">5.39.1</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.38.3-RC1/functions/srand">5.38.3-RC1</a> </div> </li> <li class="nav-item dropdown text-nowrap"> <a class="nav-link dropdown-toggle" href="#" id="dropdownlink-nav" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Documentation</a> <div class="dropdown-menu" aria-labelledby="dropdownlink-nav"> <a class="dropdown-item" href="/perl">Perl</a> <a class="dropdown-item" href="/perlintro">Intro</a> <a class="dropdown-item" href="/perl#Tutorials">Tutorials</a> <a class="dropdown-item" href="/perlfaq">FAQs</a> <a class="dropdown-item" href="/perl#Reference-Manual">Reference</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/perlop">Operators</a> <a class="dropdown-item" href="/functions">Functions</a> <a class="dropdown-item" href="/variables">Variables</a> <a class="dropdown-item" href="/modules">Modules</a> <a class="dropdown-item" href="/perlutil">Utilities</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/perldelta">Release Notes</a> <a class="dropdown-item" href="/perlcommunity">Community</a> <a class="dropdown-item" href="/perlhist">History</a> </div> </li> </ul> <ul class="navbar-nav"> <script> function set_expand (expand) { var perldocdiv = document.getElementById('perldocdiv'); var width = window.getComputedStyle(perldocdiv).getPropertyValue('max-width'); var expanded = (width == '' || width == 'none') ? true : false; if (expand === null) { expand = !expanded; } if ((expand && !expanded) || (!expand && expanded)) { perldocdiv.style.setProperty('max-width', expand ? 'none' : '960px'); var button_classlist = document.getElementById('content-expand-button').classList; if (expand) { button_classlist.add('btn-light'); button_classlist.remove('btn-outline-light'); } else { button_classlist.add('btn-outline-light'); button_classlist.remove('btn-light'); } } return expand; } function toggle_expand () { var expand = set_expand(null); document.cookie = 'perldoc_expand=' + (expand ? 1 : 0) + '; path=/; expires=Tue, 19 Jan 2038 03:14:07 UTC'; } function read_expand () { return document.cookie.split(';').some(function (item) { return item.indexOf('perldoc_expand=1') >= 0 }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function () { if (read_expand()) { set_expand(true); } }); } else if (read_expand()) { set_expand(true); } </script> <button id="content-expand-button" type="button" class="btn btn-outline-light d-none d-lg-inline-block mr-4" onclick="toggle_expand()">Expand</button> </ul> <form class="form-inline" method="get" action="/search"> <input class="form-control mr-3" type="search" name="q" placeholder="Search" aria-label="Search" value=""> </form> </div> </nav> <div id="wrapperlicious" class="container-fluid"> <div id="perldocdiv"> <div id="links"> <a href="/functions">functions</a> / <a href="/functions/srand">srand</a> <div id="more"> (<a href="/functions/srand.txt">source</a>, <a href="https://metacpan.org/pod/perlfunc#srand-EXPR">CPAN</a>) </div> </div> <dl> <dt id="srand-EXPR"><a class="permalink" href="#srand-EXPR">#</a><a id="srand1"></a>srand EXPR </dt> <dd> </dd> <dt id="srand"><a class="permalink" href="#srand">#</a>srand</dt> <dd> <p>Sets and returns the random number seed for the <a href="/functions/rand"><code>rand</code></a> operator.</p> <p>The point of the function is to &quot;seed&quot; the <a href="/functions/rand"><code>rand</code></a> function so that <a href="/functions/rand"><code>rand</code></a> can produce a different sequence each time you run your program. When called with a parameter, <a href="/functions/srand"><code>srand</code></a> uses that for the seed; otherwise it (semi-)randomly chooses a seed (see below). In either case, starting with Perl 5.14, it returns the seed. To signal that your code will work <i>only</i> on Perls of a recent vintage:</p> <pre><code>use v5.14; # so srand returns the seed</code></pre> <p>If <a href="/functions/srand"><code>srand</code></a> is not called explicitly, it is called implicitly without a parameter at the first use of the <a href="/functions/rand"><code>rand</code></a> operator. However, there are a few situations where programs are likely to want to call <a href="/functions/srand"><code>srand</code></a>. One is for generating predictable results, generally for testing or debugging. There, you use <code>srand($seed)</code>, with the same <code>$seed</code> each time. Another case is that you may want to call <a href="/functions/srand"><code>srand</code></a> after a <a href="/functions/fork"><code>fork</code></a> to avoid child processes sharing the same seed value as the parent (and consequently each other).</p> <p>Do <b>not</b> call <code>srand()</code> (i.e., without an argument) more than once per process. The internal state of the random number generator should contain more entropy than can be provided by any seed, so calling <a href="/functions/srand"><code>srand</code></a> again actually <i>loses</i> randomness.</p> <p>Most implementations of <a href="/functions/srand"><code>srand</code></a> take an integer and will silently truncate decimal numbers. This means <code>srand(42)</code> will usually produce the same results as <code>srand(42.1)</code>. To be safe, always pass <a href="/functions/srand"><code>srand</code></a> an integer.</p> <p>A typical use of the returned seed is for a test program which has too many combinations to test comprehensively in the time available to it each run. It can test a random subset each time, and should there be a failure, log the seed used for that run so that it can later be used to reproduce the same results.</p> <p>If the <code>PERL_RAND_SEED</code> environment variable is set to a non-negative integer during process startup then calls to <code>srand()</code> with no arguments will initialize the perl random number generator with a consistent seed each time it is called, whether called explicitly with no arguments or implicitly via use of <code>rand()</code>. The exact seeding that a given <code>PERL_RAND_SEED</code> will produce is deliberately unspecified, but using different values for <code>PERL_RAND_SEED</code> should produce different results. This is intended for debugging and performance analysis and is only guaranteed to produce consistent results between invocations of the same perl executable running the same code when all other factors are equal. The environment variable is read only once during process startup, and changing it during the program flow will not affect the currently running process. See <a href="/perlrun">perlrun</a> for more details.</p> <p><b><a href="/functions/rand"><code>rand</code></a> is not cryptographically secure. You should not rely on it in security-sensitive situations.</b> As of this writing, a number of third-party CPAN modules offer random number generators intended by their authors to be cryptographically secure, including: <a href="/Data::Entropy">Data::Entropy</a>, <a href="/Crypt::Random">Crypt::Random</a>, <a href="/Math::Random::Secure">Math::Random::Secure</a>, and <a href="/Math::TrulyRandom">Math::TrulyRandom</a>.</p> </dd> </dl> </div> <div id="footer"> <p>Perldoc Browser is maintained by Dan Book (<a href="https://metacpan.org/author/DBOOK">DBOOK</a>). Please contact him via the <a href="https://github.com/Grinnz/perldoc-browser/issues">GitHub issue tracker</a> or <a href="mailto:dbook@cpan.org">email</a> regarding any issues with the site itself, search, or rendering of documentation.</p> <p>The Perl documentation is maintained by the Perl 5 Porters in the development of Perl. Please contact them via the <a href="https://github.com/Perl/perl5/issues">Perl issue tracker</a>, the <a href="https://lists.perl.org/list/perl5-porters.html">mailing list</a>, or <a href="https://kiwiirc.com/client/irc.perl.org/p5p">IRC</a> to report any issues with the contents or format of the documentation.</p> </div> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.slim.min.js" integrity="sha512-/DXTXr6nQodMUiq+IUJYCt2PPOUjrHJ9wFrqpJ3XkgPNOZVfMok7cRw6CSxyCQxXn6ozlESsSh1/sMCTF1rL/g==" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.1/umd/popper.min.js" integrity="sha512-ubuT8Z88WxezgSqf3RLuNi5lmjstiJcyezx34yIU2gAHonIi27Na7atqzUZCOoY4CExaoFumzOsFQ2Ch+I/HCw==" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV" crossorigin="anonymous"></script> <script src="/js/highlight.pack.js"></script> <script>hljs.highlightAll();</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10