On 8/14/16, 5:45 AM, "Lauri Kenttä" <lauri.ken...@gmail.com> wrote:

>On 2016-08-13 18:53, Tom Worster wrote:
>> On 8/12/16 2:48 PM, Lauri Kenttä wrote:
>>> On 2016-08-12 21:40, Tom Worster wrote:
>>>> mt_srand() will work. But what would be in the array? Integers from
>>>> which the upper 32 bits, if they exist, are discarded?
>>> 
>>> mt19937ar.c contains init_by_array.
>>> Compability with that would probably be a good goal,
>>> unless someone can point out another widely used implementation.
>> 
>> Would mt_srand([1,2,3,4,5,6,7,8]) set the same seed on 32 and 64 bit
>> machines?
>
>Of course it would.
>Or let's phrase it this way: can you think of any reason why it
>shouldn't?

An array of N PHP (signed) integers in a 64bit PHP runtime can provide 2N
unsigned long seed values to MT. If mt_srand() did that then I don't see
how portability is maintained.

Otoh, if, for the sake of portability, which I imagine most would prefer,
mt_srand() discards bits from 64bit input integers then mt_rand() will
produce the same sequence for many different mt_srand() seeds. This would
be new and at odds with conventions of how seeds affect PRNG outputs.

Hence I asked on Friday about discarding bits from the array on 64bit PHP.
You pointed me to mt19937ar.c, in which I did not find the answer. My
skill in C is inadequate.

It is still not clear to me how the improved mt_srand() would work.

Tom



--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to