note
	description: "[
		This class allows you to generate RANDOM_NUMBERs for use in other classes.
	]"
	author: "JSO, Revised by AB"
	date: "Aug 8, 05"
	revision: "$1.0$"

class 
	RANDOM_NUMBER

inherit
	RANDOM
		rename
			forth as generate,
			real_item as next_value
		export
			{NONE} generate
		end

create 
	make_real_random,
	make_repeatable,
	make_with_seed

feature -- Creation

	make_real_random
			-- Create a Random Number Generator.
		local
			time_stamp: DATE_TIME
			current_seed: INTEGER_32
		do
			create time_stamp.make_now
			current_seed := time_stamp.second + time_stamp.day + time_stamp.year
			set_seed (current_seed)
			start
		end

	make_repeatable
			--  Create a Random Number Generator with a repeatable sequence.
		do
			set_seed (My_seed)
			start
		ensure
			is_repeatable: seed = My_seed
		end

	make_with_seed (s: INTEGER_32)
			-- Create a Random Number Generator with a repeatable seed.
		require
			seed_positive: s > 0
		do
			set_seed (s)
			start
		ensure
			seed_set: seed = s
		end
	
feature -- Basic Operations

	integer_value_between (low_limit: INTEGER_32; high_limit: INTEGER_32): INTEGER_32
			-- This feature allows you to generate a random integer
			-- between two integers eg. 4 and 8 or 1 and 10.	
		require
				low_limit >= 0
				high_limit >= low_limit
		local
			r: REAL_32
		do
			generate
			r := next_value * (high_limit - low_limit + 1).to_real
			Result := r.truncated_to_integer + low_limit
		ensure
			result_within_bounds: Result >= low_limit and Result <= high_limit
			index_incremented: index = old index + 1
		end

	real_value_between (low_limit: INTEGER_32; high_limit: INTEGER_32): REAL_32
			-- This feature allows you to generate a random real
			-- between two integers
		require
				low_limit >= 0
				high_limit >= low_limit
		local
			r: REAL_32
		do
			generate
			r := next_value * (high_limit - low_limit).to_real
			Result := r + low_limit.to_real
		ensure
			result_within_bounds: Result >= low_limit.to_real and Result <= high_limit.to_real
			index_incremented: index = old index + 1
		end
	
feature {NONE} 

	My_seed: INTEGER_32 = 131313
			-- DO NOT CHANGE!
	
end -- class RANDOM_NUMBER

Generated by ISE EiffelStudio