如何使用离散值播种Ada.Numerics.Discrete_Random?我看到代码如下:
declare
type Rand_Range is range 25..75;
package Rand_Int is new Ada.Numerics.Discrete_Random(Rand_Range);
seed : Rand_Int.Generator;
Num : Rand_Range;
begin
Rand_Int.Reset(seed);
Num := Rand_Int.Random(seed);
Put_Line(Rand_Range'Image(Num));
end;
使用“种子”值对“Rand_Int”进行种子处理,但是我找不到任何关于实际设置种子值的指令。或者我完全看错了吗?我想将种子值设置为我可以控制以观察测试结果的数字(如4或5)。
谢谢!
答案 0 :(得分:6)
将第二个Integer
参数传递给Reset
。这是initiator
。
Rand_Int.Reset(seed, initiator);
Ada是少数使用complete, detailed reference manual and rationale available free of charge的语言之一。用它!此外,here is the more recent Ada version's standard。
另一个注意事项:代码中的变量名seed
是一个糟糕的选择。像state
或generator
这样的选择会好得多。
注意:Ada在许多方面都是一种非常好的语言。人们抱怨非常强大,详细的类型系统。然后当系统完成并且它首先运行时尝试几个错误,他们神秘地忘记将其归因于Ada。重要的缺点是图书馆的可用性和IDE的成熟度。