【发布时间】:2013-11-20 16:44:27
【问题描述】:
我需要生成一个仅包含唯一随机数且具有单精度的二进制文件。 然后,目的是计算该文件的熵,并将其与其他数据集熵一起使用来计算比率 entropy_file/entropy_randUnique。这个值被命名为“随机性”。
我可以在 python 中使用双精度数字执行此操作,然后使用 struct.pack 将它们插入到 set() 中,如下所示:
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,即使它们不是随机的,我认为洗牌序列就足够了..
【问题讨论】:
标签: python numpy floating-point floating-point-precision floating-point-conversion