Re: mt_rand() - the same forever?
| From: | Jochem Maas | Date: | Sun, 05 Oct 2008 21:17:28 +0000 |
| Subject: | Re: mt_rand() - the same forever? | ||
| References: | 1 2 3 4 5 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-281457@lists.php.net to get a copy of this message | ||
Janek schreef:
> On Sun, Oct 5, 2008 at 10:05 PM, Ashley Sheridan
> <ash@ashleysheridan.co.uk> wrote:
>> On Sun, 2008-10-05 at 21:57 +0200, Janek wrote:
>>> I know, but I *want* to seed it. My goal is to have a fixed
>>> pseudorandom sequence for each integer (seed) and I don't want those
>>> sequences to change regarding PHP version.
>>>
>>> Janek
>>>
>>> On Sun, Oct 5, 2008 at 9:52 PM, Richard Heyes <richard@php.net> wrote:
>>>>> I wonder whether I can rely on the stability of mt_srand() and
>>>>> mt_rand(). I want them to generate the same sequence for a fixed seed,
>>>>> regardless of PHP version. Do you think I can trust it?
>>>>> Janek
>>>> Keep in mind (if you're not already) that mt_rand() doesn't
>>>> technically need to be seeded.
>>>>
>>>> --
>>>> Richard Heyes
>>>>
>>>> HTML5 Graphing for FF, Chrome, Opera and Safari:
>>>> http://www.phpguru.org/RGraph
>>>>
>> Doesn't it also rely on the system clock as well?
>>
>>
>> Ash
>> www.ashleysheridan.co.uk
>>
>>
>
> No. When I give a fixed seed to mt_srand(), each time I get the same
> sequence of mt_rand()s. My question is wheather the actual algorithm
> behind these functions is likely to change in the next version of PHP
> or not.
not likely to change in the next version at all. but there is no guarantee that
somewhere down the road a new 'rand' algorythm won't be used either,
3 things to consider doing:
1. write your own php extension that copies the mt_srand() function as
it is now and use your extension's version of the function ... then you
can be sure it won't change.
2. ask the devs on internals@lists.php.net what they think the likelyhood
is that the output may change in the future.
3. pre-generate the sequences and store them, then use those pre-generated
sequences instead of using mt_srand() (obviously this may not be viable at all)
>
> Janek
>