Intel® 高层次综合编译器专业版Pro版: 参考手册

ID 683349
日期 12/04/2023
Public
文档目录

A.1. 随机数生成程序库

Intel® HLS Compiler Pro Edition附带的随机数生成程序源代码库为您提供针对FPGA优化的随机数生成器模板类,可以将其添加到您的组件中,而无需编写自己的模板类。

随机数生成程序库和密码学

不建议将这些伪随机数生成程序(PRNG)算法用于加密目的。此库中包含的PRNG不是加密安全的伪随机数生成器 (CSPRNG),不应该用于加密。CSPRNG算法旨在使得任何多项式时间算法 (PTA)都无法计算或预测伪随机序列中的下一位,也没有PTA可以预测CSPRNG过去的值;这些算法无法实现此目的。此外,这些算法尚未经过审查,也不建议将其用作CSPRNG的PRNG组件,即使输入值来自具有适当熵(entropy)提取器的非确定性熵源。

表 61.  可由 Intel® HLS Compiler Random Number Generator Library生成的值属性
值分布 值类型 值范围 生成方式
Uniform(均匀分布) 整数 [-2³¹, 2³¹-1] Tausworthe Generator
浮点 [0, 1) (非包含) Tausworthe Generator
Gaussian(高斯分布) 浮点 [0, 1) Central limit theorem (CLT) (默认)
Box-Muller

头文件

要在组件中加入随机数生成器库,请在组件中添加以下行:
#include "HLS/rand_lib.h”

头文件是自动文档化文件。您可以查看头文件以了解如何在组件中使用随机数生成器库。

随机数对象声明

在您的组件中声明随机数对象,如下所示。在所有情况下,将 <seed_value> 指定为可选。
  • 均匀分布整数随机数
    static RNG_Uniform<int> <object_name>(<seed_value>)
  • 均匀分布浮点随机数
    static RNG_Uniform<float> <object_name>(<seed_value>)
  • 高斯分布浮点随机数(CLT方法)
    static RNG_Gaussian<float> <object_name>(<seed_value>)
    或者
    static RNG_Gaussian<float, ihc::GAUSSIAN_CLT> <object_name>(<seed_value>)
  • 高斯分布浮点随机数(Box-Muller方法)
    static RNG_Gaussian<float, ihc::GAUSSIAN_BOX_MULLER> <object_name>(<seed_value>)