gpt4 book ai didi

random - 数组长度范围内的 Ada 随机整数

转载 作者:行者123 更新时间:2023-12-05 09:05:40 25 4
gpt4 key购买 nike

这是一个简单的问题,但我找不到任何可以帮助我的东西......我想在图形节点之间创建一些随机连接。为此,我想做两个随机索引,然后连接节点。

declare
type randRange is range 0..100000;
n1: randRange;
n2: randRange;

package Rand_Int is new ada.numerics.discrete_random(randRange);
use Rand_Int;
gen : Generator;

begin
n1 := random(gen) mod n; -- first node
n2 := random(gen) mod n;

我想用数组的长度来定义范围,但我遇到了错误。尽管如此,它还是无法编译。我也不能执行模运算,因为 n 是自然的。

75:15: "Generator" is not visible
75:15: multiple use clauses cause hiding
75:15: hidden declaration at a-nudira.ads:50, instance at line 73
75:15: hidden declaration at a-nuflra.ads:47

而且我不知道这些错误是什么意思 - 显然,我的生成器出了点问题。如果有人向我展示做这件简单事情的正确方法,我将不胜感激。

最佳答案

正如其他人所回答的那样,Generator 的不可见性是由于您对所有具有 Generator 的包都有几个“使用”子句。因此,您必须指定“Rand_Int.Generator”以表明您需要 Rand_Int 包中的生成器。

“非静态表达式”的问题是因为您尝试定义一个新类型 randRange,这意味着编译器必须决定它需要为该类型的每个值使用多少位,为此类型必须有编译时间,即静态边界。您可以将其定义为子类型:

subtype randRange is Natural range 0 .. n-1;

然后编译器知道它可以使用与 Natural 类型相同的位数。 (我在这里假设“n”是整数、自然数或正数;否则,使用“n”的任何类型。)

使用子类型也应该可以解决“预期类型”的问题。

关于random - 数组长度范围内的 Ada 随机整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66918177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com