随机数生成与排序
随机数在程序中十分常见,通过Python实现随机数生成,并设计一个快速排序算法实现对随机生成的数进行排序
random库是Python的一个非常常用的内置标准库,可以产生各种分布的伪随机数(如果随机数生成的种子是相同的,则每次生成的随机数都是相同的)。
下面定义一个函数,实现在指定范围内生成n个整数以列表形式返回。
random.randint(a,b)生成一个在[a,b)之间的随机整数,注意左开右闭的区间,不包括b。random.random(a,b)随机生成[a,b)之间的小数,没有a,b参数默认产生0-1之间的随机浮点数。Random库提供的函数有很多,randrange(),uniform()产生随机浮点数,区间可以不是整数,choice()从序列中随机选一个,shuffle()将序列中元素顺序打乱。
举例:print(random.choice([‘剪刀’, ‘剪刀’, ‘剪刀’])
排序的算法有好几种,一种快速排序的方法是,拆分的方法,选定一个基准数把一批数据分成两批,一批比基准数大,一批比基准数小。再依次递归拆分下去,直到序列中所有记录均有序。
# 随机数生成与排序
import random
# 定义一个函数生成指定范围内n个整数
# 因为random.randint()一次只生成一个随机数
def random_int(ranges=[0,100],num=1):
#第一个参数表明它是一个两个元素的列表,给了默认值,第二个参数也给了默认值
if ranges[0]>ranges[1]:
print('给定参数范围有错误')
return []
res =[]
for i in range(num):
res.append(random.randint(ranges[0],ranges[1]+1))
return res
# 定义一个函数生成指定范围内n个浮点数
def random_float(ranges=[0,100],num=1):
#第一个参数表明它是一个两个元素的列表,给了默认值,第二个参数也给了默认值
if ranges[0]>ranges[1]:
print('给定参数范围有错误')
return []
res =[]
for i in range(num):
res.append(random.random()*(ranges[1]-ranges[0])+ranges[0])
return res
# 定义个快速排序的函数
def quick_sort(arr):
if len(arr)<2:
return arr
mid_index=len(arr)//2
left,mid,right=[],[],[]
for item in arr:
if item>arr[mid_index]:
right.append(item)
elif item==arr[mid_index]:
mid.append(item)
else:
left.append(item)
return quick_sort(left)+mid+quick_sort(right)
if __name__=='__main__':
int_list=random_int([10,89],10)
float_list=random_float([12.5,68.9],7)
int_list_sort=quick_sort(int_list)
float_list_sort=quick_sort(float_list)
print('排序前的整数列表:',int_list)
print('排序后的整数列表:',int_list_sort)
print('排序前的浮点数列表:',float_list)
print('排序后的浮点数列表:',float_list_sort)
程序运行结果:
排序前的整数列表: [49, 62, 75, 57, 73, 70, 27, 62, 20, 57]
排序后的整数列表: [20, 27, 49, 57, 57, 62, 62, 70, 73, 75]
排序前的浮点数列表: [66.76965820404857, 37.620121036966, 57.68894375045104, 43.52681678929305, 37.668484962689064, 58.1260883124372, 37.1173011604932]
排序后的浮点数列表: [37.1173011604932, 37.620121036966, 37.668484962689064, 43.52681678929305, 57.68894375045104, 58.1260883124372, 66.76965820404857]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】