python随机生成20个数字_python – 生成大量唯一的随机float32数字

最好的办法是生成随机的32位整数,然后将它们转换为浮点数.在生成数字时,您需要拒绝无穷大和NAN的位表示.

您可以从整数值而不是浮点值生成集合,然后在输出上进行转换.您可以使用位图来检测已使用的整数值,而不是使用集合;这更有可能适合内存,特别是考虑到你指出的最大样本量.

def random_unique_floats(n):

used = bytearray(0 for i in xrange(2**32 // 8))

count = 0

while count < n:

bits = random.getrandbits(32)

value = struct.unpack('f', struct.pack('I', bits))[0]

if not math.isinf(value) and not math.isnan(value):

index = bits // 8

mask = 0x01 << (bits & 0x07)

if used[index] & mask == 0:

yield value

used[index] |= mask

count += 1

for num in random_unique_floats(size):

file.write(struct.pack('f', num))

请注意,当您的样本数接近可能的浮点值数时,运行时间将呈指数增长.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值