我需要生成一个仅包含唯一随机数且具有单精度的二进制文件。然后,目的是计算该文件的熵,并将其与其他数据集熵一起使用来计算比率 entropy_file/entropy_randUnique。这个值被命名为“随机性”。
我可以在 python 中使用双精度数字执行此操作并将它们插入到set()
中,使用struct.pack
如下:
numbers = set()
while len(numbers) < size:
numbers.add(struct.pack(precision,random.random()))
for num in numbers:
file.write(num)
但是当我更改为单精度时,我不能只更改 pack 方法(这将产生很多相同的数字,而 while 永远不会结束),而且我不能用random
. 我已经调查过了numpy
,但生成器的工作方式与我理解的相同。我怎样才能在二进制文件中获得 370914252 (这是我最大的测试用例)唯一的 float32 ,即使它们不是随机的,我认为洗牌序列就足够了..