, , , 2012 .
, , , , ...
, , 'first, 'last, 'range, , a-nudira.adb aka ada.numerics.discrete_random. 'first_valid, 'last_valid, , 'range, .
, 'pos, 'val, 'pred,'succ, , , AlphaNumeric'Pred('A') - "@", "9", . , ...
, - , .., .
, ( , ) .
, ada.numerics.discrete_random . , , , , . (OTOH, Gnat Pro, : -)
, , random, ...
with ada.text_io, ada.integer_text_io, ada.float_text_io,
ada.numerics.discrete_random;
use ada.text_io, ada.integer_text_io, ada.float_text_io;
procedure randomID is
pragma Assertion_Policy(Check);
Subtype AlphaNumeric is character
with dynamic_predicate => AlphaNumeric in 'a'..'z' |
'A'..'Z' |
'1'..'9' ;
package CharGen is new ada.numerics.discrete_random (character);
CharG: CharGen.generator;
id : string (1..5);
function random return AlphaNumeric is
ch : character;
begin
loop
ch := charGen.random(CharG);
exit when ch in AlphaNumeric;
end loop;
return ch;
end random;
begin
for i in 1..5 loop
CharGen.Reset(CharG);
id(i) := random;
end loop;
put_line(id);
end randomID;
, , . , , - , . , id a array (1 .. 5) of AlphaNumeric, , .