鱼C论坛

 找回密码
 立即注册
查看: 1881|回复: 9

[已解决]小白求助!random随机数状态函数的应用场景是什么?

[复制链接]
发表于 2021-7-21 10:50:34 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 旗木稻草 于 2021-7-22 10:22 编辑

看了小甲鱼整理的random -- 生成伪随机数,对于随机数状态函数有些不太能理解,不知道随机数状态函数是如何应用的,应用场景是什么样子的?
我想进一步说明问题,random.getstate()和random.getstate()的应用场景是什么,我理解整数随机数生成,但是有关随机数状态函数不太理解
请教各位老师同学
最佳答案
2021-7-21 10:50:35
旗木稻草 发表于 2021-7-22 10:27
请问模仿随机情况是这样的吗?如下:
设置第一个随机情况1-10内的随机数,假如系统输出3、6、2
那么get ...



你要先获取生成器的状态,然后才能用 setstate 恢复到之前的生成器状态

  1. from random import randint,getstate,setstate

  2. x = getstate()           # 获取当前生成器内部状态
  3. print(randint(1,100))    # 打印当前随机生成的值
  4. setstate(x)              # 设置生成器为之前的某种状态,这里设置为 x 的时候的生成器状态
  5. print(randint(1,100))    # 打印当前随机生成的值
  6. setstate(x)                  
  7. print(randint(1,100))    # 打印当前随机生成的值
  8. setstate(x)
  9. print(randint(1,100))    # 打印当前随机生成的值
复制代码


输出结果(随机的相同四个数):

  1. 66
  2. 66
  3. 66
  4. 66
复制代码

最佳答案

查看完整内容

你要先获取生成器的状态,然后才能用 setstate 恢复到之前的生成器状态 输出结果(随机的相同四个数):
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-21 10:50:35 | 显示全部楼层    本楼为最佳答案   
旗木稻草 发表于 2021-7-22 10:27
请问模仿随机情况是这样的吗?如下:
设置第一个随机情况1-10内的随机数,假如系统输出3、6、2
那么get ...



你要先获取生成器的状态,然后才能用 setstate 恢复到之前的生成器状态

  1. from random import randint,getstate,setstate

  2. x = getstate()           # 获取当前生成器内部状态
  3. print(randint(1,100))    # 打印当前随机生成的值
  4. setstate(x)              # 设置生成器为之前的某种状态,这里设置为 x 的时候的生成器状态
  5. print(randint(1,100))    # 打印当前随机生成的值
  6. setstate(x)                  
  7. print(randint(1,100))    # 打印当前随机生成的值
  8. setstate(x)
  9. print(randint(1,100))    # 打印当前随机生成的值
复制代码


输出结果(随机的相同四个数):

  1. 66
  2. 66
  3. 66
  4. 66
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-21 11:22:35 | 显示全部楼层


应用场景可以是当用户需要创建随机数或者需要模仿随机情况呗,比如小甲鱼模仿投掷硬币的正反面概率

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-21 14:07:10 | 显示全部楼层
应用在一些需要随机的邻域上,比如:手机上广告是随机的,使用的就是类似random的随机函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-21 16:46:58 | 显示全部楼层
最常见是用于模拟操作,比如用selenium 就需要停留时间让网页加载 时间随机就越像正常人操作就不容易被网站方发现是爬虫
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-21 17:05:20 | 显示全部楼层
班上有 60 个同学,老师想叫 5 个同学背诵课文

老师直接念数字会受到主观因素的影响,例如老师偏好某个或多个数字,造成每个学号的不均等几率的抽取;亦或是老师想抽取小刚,并且记得小刚的学号.

如果使用随机数的话,并不会存在这个问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-21 17:26:33 | 显示全部楼层
随机数的应用还是很广泛的,比如说通过random.randint()随机生成验证码,就很常用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-7-22 10:27:42 | 显示全部楼层
Twilight6 发表于 2021-7-21 11:22
应用场景可以是当用户需要创建随机数或者需要模仿随机情况呗,比如小甲鱼模仿投掷硬币的正反面概率

请问模仿随机情况是这样的吗?如下:
设置第一个随机情况1-10内的随机数,假如系统输出3、6、2
那么getstate第一个随机情况
第二个随机情况setstate获取第一个随机情况,系统也会输出3、6、2

这种模仿随机情况在哪些场景应用的比较多?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-7-22 10:30:23 | 显示全部楼层
暗夜之隐 发表于 2021-7-21 16:46
最常见是用于模拟操作,比如用selenium 就需要停留时间让网页加载 时间随机就越像正常人操作就不容易被网站 ...

请问我是否可以理解为,使用random.getstate()获取用户的随机操作,然后使用random.setstate()来模拟操作吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-22 14:06:10 | 显示全部楼层
旗木稻草 发表于 2021-7-22 10:30
请问我是否可以理解为,使用random.getstate()获取用户的随机操作,然后使用random.setstate()来模拟操作 ...

随机数用的地方很多 ,比如中奖,爬虫用得最多  很多反爬的会检测的,如果你每次访问时间是不固定的那就越过网站这一检测规则
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 00:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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