2024-09-19 19:11:59 发布
网友
我想生成用科学记数法打印的随机浮点数,在x和y之间
我试过了:
'%.2E' % random.uniform(1.0e5,3.0e10)
但这会使生成的数字保持在1.0e8和3.0e10之间,而且永远不会低于!还有别的办法吗?我希望生成的数字不要只集中在域的上限!在
谢谢你
正如蒂姆已经说过的,在1e8和1e10之间的随机数的概率比在1e5和1e8之间的随机数的概率大得多,所以你的样本中不包含绝对可能的概率。在
一个简单的测试可以证明:
>>> [random.uniform(1.0e5, 3.0e10) < 1e8 for _ in range(10000)].count(True) 33
所以确实有低于1e8的数字,只是很少,不到百分之一。在
现在,根据你正在做什么,你可能只对生成“好看”的科学符号感兴趣,而不是数字实际上是均匀分布的。在这种情况下,可以得到两个随机数,一个决定系数,一个决定指数:
如前所述,这不会产生均匀分布的随机数;因此,根据您的应用程序,这可能根本没有帮助。但至少这些数字会“看起来更随机”。在
请放心,会有正确范围内的数字。在
好好想想。105和108之间有多少个数字(让我们用整数来简化)?在
108和3*1010之间有多少?提示:大约是300倍。在
正如蒂姆已经说过的,在1e8和1e10之间的随机数的概率比在1e5和1e8之间的随机数的概率大得多,所以你的样本中不包含绝对可能的概率。在
一个简单的测试可以证明:
所以确实有低于1e8的数字,只是很少,不到百分之一。在
现在,根据你正在做什么,你可能只对生成“好看”的科学符号感兴趣,而不是数字实际上是均匀分布的。在这种情况下,可以得到两个随机数,一个决定系数,一个决定指数:
^{pr2}$如前所述,这不会产生均匀分布的随机数;因此,根据您的应用程序,这可能根本没有帮助。但至少这些数字会“看起来更随机”。在
请放心,会有正确范围内的数字。在
好好想想。105和108之间有多少个数字(让我们用整数来简化)?在
108和3*1010之间有多少?提示:大约是300倍。在
相关问题 更多 >
编程相关推荐