鱼C论坛

 找回密码
 立即注册
查看: 9003|回复: 5

[已解决]求助关于random.uniform(a,b)的正确用法

[复制链接]
发表于 2017-7-28 15:25:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
看到小甲鱼第四课,自己查了一波random模块中常用的函数,我发现对于random.uniform()这个函数的介绍,百度的结果似乎都有问题,我把链接贴出来,大家看看是不是网上错了...
http://www.cnblogs.com/yd1227/archive/2011/03/18/1988015.html
在我理解,当 a<b 时候,n的范围一定位于a和b之间,反之同理,但是网上的结论似乎不对,我产生疑问,求老铁打一波助攻。
感谢!
最佳答案
2017-7-28 15:52:04
我们先看看这组尝试:
  1. >>> import random
  2. >>> random.seed(0)
  3. >>> random.uniform(1, 10)
  4. 8.599796663725433
  5. >>> random.uniform(1, 10)
  6. 7.821589626462722
  7. >>> random.seed(0)
  8. >>> random.uniform(10, 1)
  9. 2.4002033362745667
  10. >>> random.uniform(10, 1)
  11. 3.178410373537278
复制代码


其中seed是设置伪随机数的种子都为同一数值,这样每次的随机序列相同。
我们看到1和3相加与2和4相加的结果都是11.

我们再看看这个结果
  1. >>> random.seed(0)
  2. >>> random.random()
  3. 0.8444218515250481
  4. >>> random.random()
  5. 0.7579544029403025
复制代码


这是生成0~1的随机数。从两组尝试可以得出结论,uniform是通过random计算得出的。
即uniform(a, b) = a + (b - a) * random().
也就是说得到的是a,b之间的随机分别的数,不论a,b谁大。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-7-28 15:32:21 | 显示全部楼层
https://stackoverflow.com/questions/30030659/in-python-what-is-the-difference-between-random-uniform-and-random-random
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-28 15:32:41 | 显示全部楼层
就是生成一个a,b之间的随机数,上限下限前后不分。显然你发的那个页面是错的。
如果a > b,则生成的随机数n: a <= n <= b。如果 a <b, 则 b <= n <= a。

这条件本身就不成立。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-28 15:52:04 | 显示全部楼层    本楼为最佳答案   
我们先看看这组尝试:
  1. >>> import random
  2. >>> random.seed(0)
  3. >>> random.uniform(1, 10)
  4. 8.599796663725433
  5. >>> random.uniform(1, 10)
  6. 7.821589626462722
  7. >>> random.seed(0)
  8. >>> random.uniform(10, 1)
  9. 2.4002033362745667
  10. >>> random.uniform(10, 1)
  11. 3.178410373537278
复制代码


其中seed是设置伪随机数的种子都为同一数值,这样每次的随机序列相同。
我们看到1和3相加与2和4相加的结果都是11.

我们再看看这个结果
  1. >>> random.seed(0)
  2. >>> random.random()
  3. 0.8444218515250481
  4. >>> random.random()
  5. 0.7579544029403025
复制代码


这是生成0~1的随机数。从两组尝试可以得出结论,uniform是通过random计算得出的。
即uniform(a, b) = a + (b - a) * random().
也就是说得到的是a,b之间的随机分别的数,不论a,b谁大。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-28 17:01:59 | 显示全部楼层
冬雪雪冬 发表于 2017-7-28 15:52
我们先看看这组尝试:

好严谨的科学态度!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-31 17:36:55 | 显示全部楼层
冬雪雪冬 发表于 2017-7-28 15:52
我们先看看这组尝试:

看了一下应该是原来的网站上给的结论有误,老哥讲的很明白,感谢!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-1 02:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表