urandom

简介

urandom 模块实现了伪随机数生成器。

函数

urandom.choice(obj)

随机生成对象 obj 中的元数。

  1. obj:元数列表

示例:

  1. >>> print(random.choice("DFRobot"))
  2. R
  3. >>> print(random.choice("DFRobot"))
  4. D
  5. >>> print(random.choice([0, 2, 4, 3]))
  6. 3
  7. >>> print(random.choice([0, 2, 4, 3]))
  8. 3
  9. >>> print(random.choice([0, 2, 4, 3]))
  10. 2

urandom.getrandbits(size)

随机生成 0 到 size 个位二进制数范围内的正整数。 比如 :

  • size = 4,那么便是从 0 到0b1111中随机一个正整数。
  • size = 8,那么便是从 0 到 0b11111111中随机一个正整数。
  1. size:位大小

示例:

  1. >>> print( random.getrandbits(1)) #1位二进制位,范围为0~1(十进制:0~1)
  2. 1
  3. >>> print(random.getrandbits(1))
  4. 0
  5. >>> print(random.getrandbits(8)) #8位二进制位,范围为0000 0000~1111 11111(十进制:0~255)
  6. 224
  7. >>> print(random.getrandbits(8))
  8. 155

urandom.randint(start, end)

随机生成一个 start 到 end 之间的整数。

  1. start:指定范围内的开始值,包含在范围内
  2. end:指定范围内的结束值,包含在范围内

示例:

  1. >>> import random
  2. >>> print(random.randint(1, 4))
  3. 4
  4. >>> print(random.randint(1, 4))
  5. 2

urandom.random()

随机生成一个 0 到 1 之间的浮点数。 示例:

  1. >>> print(random.random())
  2. 0.7111824
  3. >>> print(random.random())
  4. 0.3168149

urandom.randrange(start, end, step)

随机生成 start 到 end 并且递增为 step 的范围内的正整数。例如,randrange(0, 8, 2)中,随机生成的数为 0、2、4、6 中任一个。

  1. start:指定范围内的开始值,包含在范围内
  2. end:指定范围内的结束值,包含在范围内
  3. step:递增基数

示例:

  1. >>> print(random.randrange(2, 8, 2))
  2. 4
  3. >>> print(random.randrange(2, 8, 2))
  4. 6
  5. >>> print(random.randrange(2, 8, 2))
  6. 2

urandom.seed(sed)

指定随机数种子,通常和其他随机数生成函数搭配使用。 注意: MicroPython 中的随机数其实是一个稳定算法得出的稳定结果序列,而不是一个随机序列。sed 就是这个算法开始计算的第一个值。所以就会出现只要 sed 是一样的,那么后续所有“随机”结果和顺序也都完全一致。

  1. sed:随机数种子

示例:

  1. import random
  2.  
  3. for j in range(0, 2):
  4. random.seed(13) #指定随机数种子
  5. for i in range(0, 10): #生成0到10范围内的随机序列
  6. print(random.randint(1, 10))
  7. print("end")

运行结果:

  1. 5
  2. 2
  3. 3
  4. 2
  5. 3
  6. 4
  7. 2
  8. 5
  9. 8
  10. 2
  11. end
  12. 5
  13. 2
  14. 3
  15. 2
  16. 3
  17. 4
  18. 2
  19. 5
  20. 8
  21. 2
  22. end

从上面可以看到生成两个随机数列表是一样的,你也可以多生成几个随机数列表查看结果。

urandom.uniform(start, end)

随机生成start到end之间的浮点数。

  1. start:指定范围内的开始值,包含在范围内
  2. stop:指定范围内的结束值,包含在范围内

示例:

  1. >>> print(random.uniform(2, 4))
  2. 2.021441
  3. >>> print(random.uniform(2, 4))
  4. 3.998012

更多内容可参考 urandom


评论

原文: https://www.rt-thread.org/document/site/submodules/micropython/docs/06-Tools_Module/08-urandom/