Ada线程将自动随机生成的数据传递给过程

时间:2016-04-27 15:19:18

标签: random ada

我如何创建一个程序,该程序是一个连续传递指定范围内自动随机生成数据的线程。

我目前必须使用以下步骤在控制台中手动输入每一位数据。我想创建一个程序,在运行时能够将数据传递给此过程,就好像它被输入到控制台本身一样。

procedure Analyse_Data is
  Data : Integer;
begin
  DT_Put_Line("Data input by user");
  loop
     DT_Get(Data,"Data must be taken as a whole number");
     exit when (Data >=0) and (Data <= Maximum_Data_Possible);
     DT_Put("Please input a value between 0 and ");
     DT_Put(Maximum_Data_Possible);
     DT_Put_Line("");
  end loop;
  Status_System.Data_Measured := Data_Range(Data);
end Analyse_Data;

我没有包含规范文件(.ads) 我是Ada的新手,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

使用Discrete_Random的实例生成所需范围内的一些随机数据值:

subtype Valid_Range is Natural range 0 .. Maximum_Data_Possible;
package Some_Value is new Ada.Numerics.Discrete_Random(Valid_Range);
G : Some_Value.Generator;
…
procedure Generate is
N : Valid_Range;
begin
   for I in 1 .. Count loop
      N := Some_Value.Random(G);
      Put(N);
   end loop;
end;

将值保存到文件中:

./generate > test_data.txt

使用命令行中的I / O重定向将该文件提供给您的程序:

./analyse_data < test_data.txt

具体细节取决于您的实际计划。有关标准输入中的空行,请参阅此相关Q&A