[#11439] comments needed for Random class — "NAKAMURA, Hiroshi" <nakahiro@...>

-----BEGIN PGP SIGNED MESSAGE-----

15 messages 2007/06/12

[#11450] Re: new method dispatch rule (matz' proposal) — David Flanagan <david@...>

This is a late response to the very long thread that started back in

17 messages 2007/06/13

[#11482] Ruby Changes Its Mind About Non-Word Characters — James Edward Gray II <james@...>

Does this look like a bug to anyone else?

10 messages 2007/06/16

[#11505] Question about the patchlevel release cycle — Sylvain Joyeux <sylvain.joyeux@...4x.org>

1.8.6 thread support was broken in bad ways. It stayed for three months

20 messages 2007/06/20
[#11512] Re: Question about the patchlevel release cycle — Urabe Shyouhei <shyouhei@...> 2007/06/20

Hi, I'm the 1.8.6 branch manager.

[#11543] Re: Apple reportedly to ship with ruby 1.8.6-p36 unless informed what to patch — James Edward Gray II <james@...>

On Jun 27, 2007, at 4:47 PM, Bill Kelly wrote:

10 messages 2007/06/27

Re: comments needed for Random class

From: David Flanagan <david@...>
Date: 2007-06-12 22:03:27 UTC
List: ruby-core #11441
Since 0 and 1 are both treated as true in Ruby, it would be nice if the 
Random class had a method that would randomly return true or false:

Random.maybe(probability_of_truth=0.5)

A lot of random number generators can return numbers with a gaussian 
distribution.  I've never used this feature, but someone must care about it.

How about accepting a Range object as the argument to methods like 
integer, float, and rand.  If a single numeric value is passed, then 0 
is the implicit lower bound.  Otherwise the argument is a range that 
specifies both the upper and lower bound.

I haven't worked with binary I/O in Ruby yet, but would it ever be 
useful to have an infinite stream of random bytes?

As an alternative to "pulling" random numbers from a Random object, 
could we also have iterator methods that yield random numbers to a 
block? It seems like this could be useful in testing and benchmarking 
frameworks to throw random input at existing code....

Enumerable.shuffle(Random): works like Enumerable.sort--takes any 
Enumerable as input and returns an array.  I propose this because I 
vaguely remember reading something by Josh Bloch (Java API designer) 
about how it is actually quite tricky to correctly implement a random 
shuffle.  I don't remember the details, however.

   David Flanagan

NAKAMURA, Hiroshi wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Hi all,
> 
> # Especially to Technorama Ltd.
> 
> We're discussing about introducing Random class for PRNG on ruby-dev ML.
> 
>  * current rand and srand changes global state.  it should be the
>    source of a security problem sooner or later in this "framework" era.
>    (I claimed)
>  * Mats agreed to introduce a class for PRNG based on current Mersenne
>    Twister implementation.  class name is "Random".
>  * no plan to introduce another PRNG based on other PRNG algorithm.
>    MT is the only PRNG engine for "Random".
>  * we're now discussing what methods "Random" should have.
> 
> Here's my proposal (no agreement for now);
> 
> Random#integer(max)
> Ramdom#bytes(size)
> Random#float         # same as Random#rand(0).  not needed?
> Random#rand(max = 0)
> Random#srand(seed = nil)
> Random#seed=(seed = nil) # same as Random#srand(seed)
> 
> Random.rand(max = 0) # calls Random#rand(max) of the singleton Random
>                      # object which is initialized with the current
>                      # srand().
> 
> rand(max = nil)      # calls Random.rand(max)
> srand()              # srand() now takes no argument for 1.9.
> 
> Comments needed.
> 
> Regards,
> // NaHi
> 
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.5 (Cygwin)
> 
> iQEVAwUBRm49vB9L2jg5EEGlAQIhCAf/cUqxCF7wkEwakEPkTaonfVvO5Firz1jh
> obm8cr3tr4+8sEiY5WX6nLoI3laEOgVfiyjgmTmFY2L6b4ghyU3fcynzlLINSbPn
> MehyWaSscamlaN28DkPv8Jq51hoIMTNsmTyA6QEVIKkN+m9DFdd4Jk0505kB9/yH
> RdhMFsZ/wZXjJkbAEVIIxaenfn90tRydwcXF/PZRHNVjbi/r0U57wlmni+aoGWrO
> 3bafFWymg0t+nlKY1Kajgy4cle/Cx3WaeZ2YoRTyp5HsBS5Tw0cUbwZDF8G14bVW
> TWkDEe9nRG0e82Hh8ow6jqoUqOgIJBqi6/KfaoR7JQtXC2Bi0DbHiQ==
> =ORxD
> -----END PGP SIGNATURE-----
> 


In This Thread