[#44036] [ruby-trunk - Feature #6242][Open] Ruby should support lists — "shugo (Shugo Maeda)" <redmine@...>

20 messages 2012/04/01

[#44084] [ruby-trunk - Bug #6246][Open] 1.9.3-p125 intermittent segfault — "jshow (Jodi Showers)" <jodi@...>

22 messages 2012/04/02

[#44156] [ruby-trunk - Feature #6265][Open] Remove 'useless' 'concatenation' syntax — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>

45 messages 2012/04/06

[#44163] [ruby-trunk - Bug #6266][Open] encoding related exception with recent integrated psych — "jonforums (Jon Forums)" <redmine@...>

10 messages 2012/04/06

[#44303] [ruby-trunk - Feature #6284][Open] Add composition for procs — "pabloh (Pablo Herrero)" <pablodherrero@...>

57 messages 2012/04/12

[#44349] [ruby-trunk - Feature #6293][Open] new queue / blocking queues — "tenderlovemaking (Aaron Patterson)" <aaron@...>

10 messages 2012/04/13

[#44402] [ruby-trunk - Feature #6308][Open] Eliminate delegation from WeakRef — "headius (Charles Nutter)" <headius@...>

20 messages 2012/04/17

[#44403] [ruby-trunk - Feature #6309][Open] Add a reference queue for weak references — "headius (Charles Nutter)" <headius@...>

15 messages 2012/04/17

[#44533] [ruby-trunk - Bug #6341][Open] SIGSEGV: Thread.new { fork { GC.start } }.join — "rudolf (r stu3)" <redmine@...>

24 messages 2012/04/22

[#44630] [ruby-trunk - Feature #6361][Open] Bitwise string operations — "MartinBosslet (Martin Bosslet)" <Martin.Bosslet@...>

31 messages 2012/04/26

[#44648] [ruby-trunk - Feature #6367][Open] #same? for Enumerable — "prijutme4ty (Ilya Vorontsov)" <prijutme4ty@...>

16 messages 2012/04/26

[#44704] [ruby-trunk - Feature #6373][Open] public #self — "trans (Thomas Sawyer)" <transfire@...>

61 messages 2012/04/27

[#44748] [ruby-trunk - Feature #6376][Open] Feature lookup and checking if feature is loaded — "trans (Thomas Sawyer)" <transfire@...>

13 messages 2012/04/28

[ruby-core:44410] [ruby-trunk - RubySpec #3128][Assigned] Randomness specs

From: "mame (Yusuke Endoh)" <mame@...>
Date: 2012-04-17 11:30:57 UTC
List: ruby-core #44410
Issue #3128 has been updated by mame (Yusuke Endoh).

Status changed from Open to Assigned
Assignee set to marcandre (Marc-Andre Lafortune)

Marc-Andre, do you need discussion about this?

-- 
Yusuke Endoh <[email protected]>
----------------------------------------
RubySpec #3128: Randomness specs
https://bugs.ruby-lang.org/issues/3128#change-25955

Author: marcandre (Marc-Andre Lafortune)
Status: Assigned
Priority: Normal
Assignee: marcandre (Marc-Andre Lafortune)
Category: core
Target version: 


=begin
 What should be the Ruby specs for the new Random class (and existing Kernel.{s}rand)?
 
 More precisely: what should one expect of any Ruby implementation?
 
 Several degrees of similarity with MRI are possible:
 
 Say r = Random.new(42) and N is an Integer
 
 0) r.rand(N) is included in 0...N
 1) r.rand(N) will eventually return all values in 0...N
 2) r.rand(N) will return any particular value in 0...N with a probability of around 1/N
 <insert any any of the known random tests and/or a minimal period>
 3) r is a Mersenne Twister 
 4) r is MT19937
 5) r.rand(N) generates the same particular string on all platforms
 
 
 Implementers are ultimately free to choose whichever implementation they prefer, of course.
 
 Still, it would be preferable to state what is the expect behavior for the Ruby language, not just for MRI. If MRI's guarantees are stronger, these should be stated as such.
 
 Current state of affairs:
 
 The documentation for Random class states that it is a Mersenne Twister pseudo number generator (but doesn't state which), so this corresponds to level (3) above.
 
 Kernel.rand states that *currently*, r is a modified MT19937.
 
 The Ruby Standardization WG Draft doesn't document Kernel.rand yet (nor Random, of course).
 
 
 Rubinius' implementation currently guarantees level 0 (and also level 1 if N is not too big)
 
 JRuby's implementation guarantees level 1 (and also level 2 if N is not too big)
 
 Python and Java both guarantee the same particular sequence; other algorithms might be available as subclasses of their Random class.
 
 ------
 
 My personal choice would be in line with Java and Python: insure the exact same sequence for the Random class. Implementations are free to provide subclasses of Random for different/better/faster algorithms.
 
 If deemed preferable, Kernel.rand could have much lower required standards to allow for better speed, in which case level (2) above seems like the strict minimum.
=end



-- 
http://bugs.ruby-lang.org/

In This Thread

Prev Next