BBC MicroBit上Ada的随机数生成器

时间:2019-01-01 14:01:45

标签: random ada bbc-microbit

为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;

3 个答案:

答案 0 :(得分:2)

如果您使用

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

在您的项目中或

--RTS=ravenscar-full-microbit

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

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

答案 1 :(得分:1)

如果有可用的浮点数,则可以使用{_ {3}}的U_Rand。

答案 2 :(得分:1)

PragmAda可重用组件中提供了许多RNG。也许其中之一适合您。

PragmARCs