在python中生成随机科学符号float

2024-09-19 19:11:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想生成用科学记数法打印的随机浮点数,在x和y之间

我试过了:

'%.2E' % random.uniform(1.0e5,3.0e10)

但这会使生成的数字保持在1.0e8和3.0e10之间,而且永远不会低于!还有别的办法吗?我希望生成的数字不要只集中在域的上限!在

谢谢你


Tags: 数字randomuniform科学浮点数办法e5记数法
2条回答

正如蒂姆已经说过的,在1e8和1e10之间的随机数的概率比在1e5和1e8之间的随机数的概率大得多,所以你的样本中不包含绝对可能的概率。在

一个简单的测试可以证明:

>>> [random.uniform(1.0e5, 3.0e10) < 1e8 for _ in range(10000)].count(True)
33

所以确实有低于1e8的数字,只是很少,不到百分之一。在

现在,根据你正在做什么,你可能只对生成“好看”的科学符号感兴趣,而不是数字实际上是均匀分布的。在这种情况下,可以得到两个随机数,一个决定系数,一个决定指数:

^{pr2}$

如前所述,这不会产生均匀分布的随机数;因此,根据您的应用程序,这可能根本没有帮助。但至少这些数字会“看起来更随机”。在

请放心,会有正确范围内的数字。在

好好想想。105和108之间有多少个数字(让我们用整数来简化)?在

108和3*1010之间有多少?提示:大约是300倍。在

相关问题 更多 >