Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:80396 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 53292 invoked from network); 12 Jan 2015 01:04:06 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 12 Jan 2015 01:04:06 -0000 Authentication-Results: pb1.pair.com smtp.mail=smalyshev@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=smalyshev@gmail.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.218.45 as permitted sender) X-PHP-List-Original-Sender: smalyshev@gmail.com X-Host-Fingerprint: 209.85.218.45 mail-oi0-f45.google.com Received: from [209.85.218.45] ([209.85.218.45:49196] helo=mail-oi0-f45.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id E0/A3-34383-58D13B45 for ; Sun, 11 Jan 2015 20:04:06 -0500 Received: by mail-oi0-f45.google.com with SMTP id x69so18614947oia.4 for ; Sun, 11 Jan 2015 17:04:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=+FtuCdtg/kEVgezswnUU/eLPvdAS45so2Qlw/EWn4IU=; b=Py7ONYiJWxfz/nM3CMKDtZfDCc8nxKRNdHANE1jcLXMQgOMLsR0xt2DT33yS9r9I2l bhvmb/GM9oLqffuNWkigPOr4pAEgo+g4/9DMSxJa2eGKD7R3U8bGUCMMhmX1wLsq81lG MTatLfbqB8a8L7hMQMlMXemtpTFfRhgBZUqSclHnCYAB3gk6vZA/il1ke37YttmAPzEZ MPHjWVqdb1n49je0qS7pqNaRRsJPn8ObfLkd2lEbtSg2Ew7WHawmYPxoIpG+Sqdv1myq uZFyi2oVCGL73bE9iuJaqd7zPGcCVyUMS+TM7ItuloeHOOiRiUM7SKB/yVW24o6hAhiY T9Cw== X-Received: by 10.182.225.232 with SMTP id rn8mr16061101obc.23.1421024642423; Sun, 11 Jan 2015 17:04:02 -0800 (PST) Received: from [192.168.2.102] (108-66-6-48.lightspeed.sntcca.sbcglobal.net. [108.66.6.48]) by mx.google.com with ESMTPSA id nt5sm8326139obb.26.2015.01.11.17.04.01 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 11 Jan 2015 17:04:01 -0800 (PST) Message-ID: <54B31D77.9010100@gmail.com> Date: Sun, 11 Jan 2015 17:03:51 -0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 To: Andrea Faulds , Jordi Boggiano , Yasuo Ohgaki CC: PHP Internals List References: <54B30DB9.3000003@seld.be> <76B8D342-43E7-42E6-AD82-FCF7C5CA8658@ajf.me> In-Reply-To: <76B8D342-43E7-42E6-AD82-FCF7C5CA8658@ajf.me> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [PHP-DEV] rand(), mt_rand() and limits From: smalyshev@gmail.com (Stanislav Malyshev) Hi! > Something like this, maybe: > > $numgen = new RandomNumberGenerator(RAND_MERSENNE_TWISTER, time()); // could auto-seed with time() > $randInt1 = $numgen->getInt(0, 100); // gets random integer and advances this generator > list($randInt2, $numgen) = $numgen->newGetInt(0, 100); // gets random integer and returns a new, advanced generator > $serialised = $numgen->serialiseState(); // Or maybe $numgen->getSeed() ? > > Does that work? Having new, better API is fine. Breaking existing working code because new, better API is possible, is not fine. -- Stas Malyshev smalyshev@gmail.com