一个 Ada 程序中有多个随机类型?

Multiple random types in one Ada program?

在我的 Ada 程序中,我想创建两种类型的随机数:范围内的随机整数和我定义的随机类型。 在我的例子中,我有:

type servizio is (piscina, spa, entrambi);
type tempo is range 2..5;

我尝试按如下方式创建随机实例:

package servizio_random is new Ada.Numerics.Discrete_Random(servizio);
use servizio_random;
G : Generator;

package tempo_random is new Ada.Numerics.Discrete_Random(tempo);
use tempo_random;

我想在我的主要任务中使用随机 "servizio",而在特定任务 (task type cliente (ID: cliente_id; tipo: servizio);) 中使用 "tempo" 随机。 那么我的问题是:如何做到这一点?我需要多台发电机还是只需要一台?我试图将所有代码放在主要任务中,但我得到了生成器不可见的错误(可能是因为我放了两个 "use")。我还尝试将 "tempo" random 放在客户端任务中,并在那里定义另一个生成器(在任务范围内),但没有成功。 如何使用随机类型("cliente" 或 "tempo")的函数 Random(G) 和 select 来使用?这是如何工作的? 谢谢。

多个生成器就可以了。

但您可能希望省略 Use 子句并使用限定名称,例如

G1 : servizio_random.Generator; 
G2 : tempo_random.generator;

然后根据需要从 G1 或 G2 获取随机数据。