comp.lang.ada
 help / color / mirror / Atom feed
* "Constraint Error: Range Check" That Does Not Always Occur
@ 2007-11-22  6:42 DarthBob88
  2007-11-22  7:38 ` Damien Carbonne
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: DarthBob88 @ 2007-11-22  6:42 UTC (permalink / raw)


I've been trying to write a program that creates four random numbers,
to simulate four dice rolling; a D&D simulator, in fact.
Unfortunately, I occasionally get "raised CONSTRAINT_ERROR : test.adb:
22 range check failed" (line 22 is one of the lines to generate a
random number; it varies between the four). I have been trying to find
information on how to prevent this error, but I can't find anything
about it. I'm extremely new to this language, as in I only started
last week new, so any help would be greatly appreciated. Here follows
my code, warts and all.

with Ada.Text_IO, Ada.Integer_Text_IO;
with Ada.Numerics.Discrete_Random;

procedure test is
	subtype Die is Integer range 1..6;
	--Declare that anything of type Die may be
	--an integer, value between 1 and 6, inclusive, and sod-all else.
	subtype Dice is Integer range 3*Die'First .. 3*Die'Last;
	--Declares that Dice may be anything from 3 to 18.
	package Random_Die is new Ada.Numerics.Discrete_Random (Die);
	use Random_Die;
	--Random generator; produces an integer between 1 and 6
	sum : Integer := 0;
	G: Generator;
     	D1 : Dice;
	D2 : Dice;
	D3 : Dice;
	D4 : Dice;
	--Declare four Dice
begin
	Reset(G);
	D1 := Random(G);
	D2 := Random(G);
	D3 := Random(G);
	D4 := Random(G);
	--I Haven't found the error just yet, but a Constraint_Error
	--Occasionally comes up for the previous 4 lines
	--I haven't been able to find it online, but I presume
	--It's because the generator comes up with a number outside of [1,6]
	sum := D1 + D2 + D3 + D4;
	--Debugging
	Ada.Integer_Text_IO.Put(D1);
	Ada.Integer_Text_IO.Put(D2);
	Ada.Integer_Text_IO.Put(D3);
	Ada.Integer_Text_IO.Put(D4);
	Ada.Integer_Text_IO.Put(sum);
end test;
--compile Ada programs with gnat make <foo>.adb

If it helps any, I'm using the Windows version of GNAT on XP. Thanks
in advance.



^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2007-11-26 18:38 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-11-22  6:42 "Constraint Error: Range Check" That Does Not Always Occur DarthBob88
2007-11-22  7:38 ` Damien Carbonne
2007-11-22  9:12   ` anon
2007-11-22  9:56   ` Stephen Leake
2007-11-26 18:38   ` Adam Beneschan
2007-11-22  9:47 ` Stuart
2007-11-22 14:14 ` Matthew Heaney
2007-11-23  3:48   ` DarthBob88

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox