【问题标题】:Random number generator for Ada on BBC MicroBitBBC MicroBit 上的 Ada 随机数生成器
【发布时间】:2019-01-05 19:52:18
【问题描述】:

为 BBC Microbit 开发一款小游戏。

with Ada.Numerics.Discrete_Random 举报"Ada.Numerics" is not a predefined library unit.

Ada 是否提供另一种在 BBC MicroBit 上生成随机数的方法? arch/ARM/Nordic/svd/nrf51/nrf51_svd-rng 定义了一个随机数生成器记录 RNG_Peripheral。这是我正在搜索的内容还是仅与蓝牙一起使用?

GPS 2018 (20180528) hosted on x86_64-pc-linux-gnu
GNAT Community 2018 (20180524-73)

Active toolchain: arm-eabi

the GNAT Programming Studio

(c) 2001-2018 AdaCore

我的代码:

with Ada.Numerics.Discrete_Random;

package body Flip_A_Coin is

   package Random_Coin is new Ada.Numerics.Discrete_Random(Coin);

   G: Random_Coin.Generator;

   ------------------
   --  Reset       --
   ------------------

   procedure Reset is

   begin

      Random_Coin.Reset(G);

   end Reset;

   ------------------
   --  Flip        --
   ------------------

   function Flip
     return Coin is

   begin

      return Random_Coin.Random(G);

   end Flip;

begin

   Reset;

end Flip_A_Coin;

【问题讨论】:

  • 你命名了一个变量G ??!!

标签: random ada bbc-microbit


【解决方案1】:

如果你使用

for Runtime ("ada") use "ravenscar-full-microbit";

在您的项目中或

--RTS=ravenscar-full-microbit

您会在命令行上找到标准的 Ada RNG。

您也可以按照您的建议尝试使用Ada Drivers Library 中的NRF51_SVD.RNG,这应该可以解决问题。

【讨论】:

  • 您是说 Ada.Numerics 在 Microbit 上不可用?你能解释一下为什么吗?我遇到了同样的问题,但涉及 Sqrt 和 Arctan。
  • 按照你的建议使用 ravenscar-full-microbit 运行时给了我很多错误,从“错误:必须编译“s-stalib.adb”开始,包括很多关于过时的消息和只读文件。
  • (本期)[github.com/AdaCore/Ada_Drivers_Library/issues/91] 中的讨论似乎是关于相同的潜在问题 - Microbit_ZFP 运行时不提供对常规 Ada 库的访问权限。
  • Ada.Numerics.* 是一组文件(a-numeri.ads 等,别担心),它们包含在 ravenscar-full 运行时但不包含在 zfp 运行时(zfp => zero 足迹)。可以将它们复制到 zfp 运行时并重建它……不适合胆小的人。关于您的编译错误,首先要做的是从您的构建中清除所有.o.ali 文件,然后重试。
  • 谢谢西蒙。我发现 this adacore guide 专门展示了如何将 Ada.Numerics.* 添加到 ZFP 库中。
【解决方案2】:

如果你有可用的浮点数,你可以使用 U_Rand available @Mathpaqs

【讨论】:

    【解决方案3】:

    在 PragmAda 可重用组件中有许多可用的 RNG。也许其中一个会适合你。

    PragmARCs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-03
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多