【发布时间】:2013-05-10 21:11:38
【问题描述】:
我想生成 0 到 0.5 之间的均匀分布随机数,但截断到小数点后 2 位。
没有截断,我知道这是由
import numpy as np
rs = np.random.RandomState(123456)
set = rs.uniform(size=(50,1))*0.5
任何人都可以帮助我就如何生成高达 2 d.p 的随机数提供建议。只要?谢谢!
【问题讨论】:
-
你知道小数
0.1不存在作为float吗? -
是的,我相信我应该澄清一下,我希望它四舍五入到 2 个有效数字。 (在数值精度范围内)
-
@mtigger:我认为你没有抓住重点。如果您将
0.10舍入为 2 个有效数字并将其存储在float(或 numpyf8)中,您将得到0.100000000000000005551115。而下一个较小的float小于0.10。 IEEE double 中没有等于0.10的值。 -
@mtigger:嗯,那是不可能。
0.10不能存储在float中。它总是一个近似值。在 Python 2.6 中,您可以看到这一点(在更高版本中它被隐藏但仍然存在):在提示符处键入.1并看到它表示为0.10000000000000001(这仍然只是一个近似值)。 -
生成随机整数并用隐式移位 100 解释它们。或者使用十进制数据类型。