随机数这一概念在不同领域有着不同的含义,在密码学、通信领域有着非常重要的用途。
Python 的随机数模块是 random,random 模块主要有以下函数,结合例子来看看。
In [2]:
import random
# random.choice(sequence)。参数sequence表示一个有序类型。
# random.choice 从序列中获取一个随机元素。
print(random.choice(range(1,100)))
# 从一个列表中产生随机元素
list1 = ['a', 'b', 'c']
print(random.choice(list1))
In [2]:
# random.sample()
# 创建指定范围内指定个数的整数随机数
print(random.sample(range(1,100), 10))
print(random.sample(range(1,10), 5))
# 如果要产生的随机数数量大于范围边界,会怎么样?
# print(random.sample(range(1,10), 15))
In [3]:
# random.randint(a, b),用于生成一个指定范围内的整数。
# 其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b
print(random.randint(1,100))
# random.randrange([start], stop[, step]),
# 从指定范围内,按指定基数递增的集合中 获取一个随机数。
print(random.randrange(1,10))
# 可以多运行几次,看看结果总是哪几个数字
print(random.randrange(1,10,3))
In [3]:
# random.random()用于生成一个0到1的随机浮点数: 0 <= n < 1.0
print(random.random())
In [4]:
# random.uniform(a, b),
# 用于生成一个指定范围内的随机浮点数,两个参数其中一个是上限,一个是下限。
# 如果a < b,则生成的随机数n: a <= n <= b。如果 a > b, 则 b <= n <= a。
print(random.uniform(1,100))
print(random.uniform(50,10))
In [5]:
# random.shuffle(x[, random]),
# 用于将一个列表中的元素打乱
a = [12, 23, 1, 5, 87]
random.shuffle(a)
print(a)
In [6]:
# random.sample(sequence, k),
# 从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。
print(random.sample(range(10),5))
print(random.sample(range(10),7))
In [2]:
# 猜数,人猜
# 简单版本
import random
a = random.randint(1,1000)
print('Now you can guess...')
guess_mark = True
while guess_mark:
user_number =int(input('please input number:'))
if user_number > a:
print('too big')
if user_number < a:
print('too small')
if user_number == a:
print('bingo!')
guess_mark = False
In [ ]:
# 猜数,人猜
# 记录猜数的过程
import random
# 记录人猜了多少数字
user_number_list = []
# 记录人猜了几次
user_guess_count = 0
a = random.randint(1,100)
print('Now you can guess...')
guess_mark = True
# 主循环
while guess_mark:
user_number =int(input('please input number:'))
user_number_list.append(user_number)
user_guess_count += 1
if user_number > a:
print('too big')
if user_number < a:
print('too small')
if user_number == a:
print('bingo!')
print('your guess number list:', user_number_list)
print('you try times:', user_guess_count)
guess_mark = False
In [ ]:
# 猜数,人猜
# 增加判断次数,如果猜了大于4次显示不同提示语
import random
# 记录人猜了多少数字
user_number_list = []
# 记录人猜了几次
user_guess_count = 0
a = random.randint(1,100)
print('Now you can guess...')
guess_mark = True
# 主循环
while guess_mark:
if 0 <= user_guess_count <= 4:
user_number =int(input('please input number:'))
if 4 < user_guess_count <= 100:
user_number =int(input('try harder, please input number:'))
user_number_list.append(user_number)
user_guess_count += 1
if user_number > a:
print('too big')
if user_number < a:
print('too small')
if user_number == a:
print('bingo!')
print('your guess number list:', user_number_list)
print('you try times:', user_guess_count)
guess_mark = False
可以参考我们开发的python 函数包中的 random 部分,https://fishbase.readthedocs.io/en/latest/fish_random.html
fish_random.gen_random_address(zone) 通过省份行政区划代码,返回该省份的随机地址
fish_random.get_random_areanote(zone) 省份行政区划代码,返回下辖的随机地区名称
fish_random.gen_random_bank_card([…]) 通过指定的银行名称,随机生成该银行的卡号
fish_random.gen_random_company_name() 随机生成一个公司名称
fish_random.gen_random_float(minimum, maximum) 指定一个浮点数范围,随机生成并返回区间内的一个浮点数,区间为闭区间 受限于 random.random 精度限制,支持最大 15 位精度
fish_random.gen_random_id_card([zone, …]) 根据指定的省份编号、性别或年龄,随机生成一个身份证号
fish_random.gen_random_mobile() 随机生成一个手机号
fish_random.gen_random_name([family_name, …]) 指定姓氏、性别、长度,返回随机人名,也可不指定生成随机人名
fish_random.gen_random_str(min_length, …) 指定一个前后缀、字符串长度以及字符串包含字符类型,返回随机生成带有前后缀及指定长度的字符串
In [10]:
from fishbase.fish_random import *
# 这些银行卡卡号只是符合规范,可以通过最基本的银行卡号规范检查,但是实际上是不存在的
# 随机生成一张银行卡卡号
print(gen_random_bank_card())
# 随机生成一张中国银行的借记卡卡号
print(gen_random_bank_card('中国银行', 'CC'))
# 随机生成一张中国银行的贷记卡卡号
print(gen_random_bank_card('中国银行', 'DC'))
In [16]:
from fishbase.fish_random import *
# 生成假的身份证号码,符合标准身份证的分段设置和校验位
# 指定身份证的地域
print(gen_random_id_card('310000'))
# 增加指定年龄
print(gen_random_id_card('310000', age=70))
# 增加年龄和性别
print(gen_random_id_card('310000', age=30, gender='00'))
# 生成一组
print(gen_random_id_card(age=30, gender='01', result_type='LIST'))
In [ ]: