首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何一致地确定我的round.random.uniform有多少位数?

问如何一致地确定我的round.random.uniform有多少位数?
EN

Stack Overflow用户
提问于 2019-08-09 05:15:19
回答 2查看 59关注 0票数 0

这段代码:

代码语言:javascript
复制
import random

while True:
    thing = str(round(random.uniform(1,3), 3))
    print(thing)

并不总是生成3个小数的数字,有时给我的数字只有2个小数。

输出示例:

代码语言:javascript
复制
1.575
2.035
2.864
2.118
1.069
2.36
1.092
1.948
2.54
2.224
2.318
1.713
1.819
2.717
1.171
2.918
3.0
1.23
2.487

我能够修复这个问题,创建一个例程来检查我的数字的长度,然后我附加另一个随机生成的整数字符串。喜欢

代码语言:javascript
复制
if len(thing) < 5:
    thing = thing + str(2)

但是,我想知道如何设置参数以始终生成固定长度的随机数。

提前感谢!

@Edit:多亏了Harry和Peter,找到了解决方案。我正在通过以下方式控制我的号码长度:

代码语言:javascript
复制
thing = round(random.uniform(1,3), 3)
hora = str(dt.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
pack = '{:.3f}'.format(thing) + ',' + hora
pack = str(pack)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-09 05:29:25

你一直在生成有三位小数的数字,只是在某些情况下,其中一个或多个小数位是0。默认情况下,print不会在小数点后显示尾随的0。例如,它可能会生成数字2.360,但print会将其修剪为2.36。如果您希望始终以特定的小数位数显示数字,则可以使用format string

代码语言:javascript
复制
print('{:.3f}'.format(thing))

这将打印我刚才给出的示例中的2.360。

票数 2
EN

Stack Overflow用户

发布于 2019-08-09 06:02:59

另一种选择是在乘以10的幂(例如,1000)的范围内生成随机整数,然后将该随机整数除以相同的10的幂:

代码语言:javascript
复制
random.randrange(1000, 3000) / 1000

但请注意,结果数是以2为基数的浮点数,这不是存储十进制数的理想方式。但是,Python有一个支持十进制数的标准库;要生成随机十进制数,只需导入decimal并从随机整数创建一个小数,如下所示:

代码语言:javascript
复制
from decimal import Decimal
frac = Decimal(1)/Decimal(1000)
Decimal(random.randrange(1000, 3000)) * frac

( decimal库并不总是通过除以1000来显示小数点后的相同位数。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57420686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档