首页 > 其他分享 >随机数生成与排序

随机数生成与排序

时间:2023-10-22 12:13:31浏览次数:31  
标签:sort arr int list 生成 ranges 随机数 排序

随机数生成是计算机领域当中十分常见的功能,下面展示随机数生成的方法以及生成之后对随机数进行排序,这里使用的是快速排序,快速排序不懂的同学,可以参考我的另外一博客链接,这里不做讲解:

https://www.cnblogs.com/caizhou520/p/14542847.html

随机数生成以及快速排序的代码如下所示:

 1 # python3
 2 import random
 3 
 4 # 函数功能:生成ranges范围内的nums个整数
 5 def random_int(ranges=[0,100],num=1):  
 6     if ranges[0]>ranges[1]:   # 检查生成随机数的范围是否有错
 7         print('取值范围错误')
 8         return []
 9     res = []
10     for i in range(num):
11         res.append(random.randint(ranges[0],ranges[1]+1))
12     return res
13 
14 # 函数功能:生成ranges范围内的nums个小数
15 def random_float(ranges=[0,100],num=1):
16     if ranges[0]>ranges[1]:   # 检查生成随机数的范围是否有错
17         print('取值范围错误')
18         return []  
19     res = []
20     for i in range(num):
21         res.append(random.random()*(ranges[1]-ranges[0])+ranges[0])
22     return res
23 
24 # 函数功能:快速排序
25 def quick_sort(arr): 
26     if len(arr) < 2:
27         return arr
28     # 选取基准,随便选哪个都可以,选中间的便于理解
29     mid_index = len(arr) // 2
30     # 定义基准值左中右三个数列
31     left, mid, right = [], [], []
32     
33     for item in arr: 
34         if item > arr[mid_index]:  # 大于arr[mid_index]的放在右边集合
35             right.append(item)     
36         elif item==arr[mid_index]: # 等于arr[mid_index]的放在中间集合
37             mid.append(item)
38         else:                      # 小于arr[mid_index]的放在左边集合
39             left.append(item)
40     # 使用迭代进行比较
41     return quick_sort(left) + mid + quick_sort(right)
42 
43 
44 if __name__ == '__main__':
45     int_list = random_int([20,60],5)
46     float_list = random_float([20.1,60],5)
47     int_list_sort = quick_sort(int_list)
48     float_list_sort = quick_sort(float_list)
49     # 上面排序后是升序,如果想降序排列,只需加下列命令
50     # int_list_sort = int_list_sort[::-1]
51     print('整数列表排序前:',int_list)
52     print('整数列表排序前:',int_list_sort)
53     print('浮点列表排序前:',float_list)
54     print('浮点列表排序前:',float_list_sort)

随机数生成之后的结果如下所示:

 

标签:sort,arr,int,list,生成,ranges,随机数,排序
From: https://www.cnblogs.com/caizhou520/p/17780237.html

相关文章

  • 深度学习设置随机数种子
    seed=2023torch.manual_seed(seed)#torch的CPU随机性,为CPU设置随机种子torch.cuda.manual_seed(seed)#torch的GPU随机性,为当前GPU设置随机种子torch.cuda.manual_seed_all(seed)#torch的GPU随机性,为所有GPU设置随机种子......
  • 最小生成树 PRIM算法 - 附可运行代码
    学习的时候,觉得这篇资料蛮好的:https://www.cnblogs.com/JayShao/p/12381830.html 然后这篇文章比较新颖,自觉比较适合写代码的理解:https://www.geeksforgeeks.org/kruskals-minimum-spanning-tree-algorithm-greedy-algo-2/  代码也比较齐全,我自己动手试试吧! Prim:生成......
  • 十大排序算法理解总结
    ......
  • R语言股市可视化相关矩阵:最小生成树|附代码数据
    原文链接:http://tecdat.cn/?p=17835最近我们被客户要求撰写关于股市可视化的研究报告,包括一些图形和统计输出。本文在股市可视化中可视化相关矩阵 :最小生成树在本文示例中,我将使用日数据和1分钟数据来可视化股票数据。我发现以下概念定义非常有用: 连通图:在无向图中,若任......
  • 思路开发银行流水生成器,仅供学习,可按参数生成数据
    其实小编我自己也比较闲,那么今天就给大家分享一款用易语言开发的银行流水生成器,别说,做的还挺像的~~~~~~~~~~我先把界面给大家奉上来,大家看下 然后核心代码部分我会在这里给大家贴出来,然后软件的话可以去我自己的博客能下载到的!!!============================================......
  • 快速排序算法模板+内置函数
    思想:确定分界点调整区间,小于分界点的在左边区间,大于分界点在右边区间。递归处理左右两边。voidquick_sort(intq[],intl,intr){if(l>=r)return;inti=l-1,j=r+1,x=q[l+r>>1];while(i<j){doi++;while(q[i......
  • [Leetcode] 0083. 删除排序链表中的重复元素
    83.删除排序链表中的重复元素题目描述给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回已排序的链表 。 示例1:输入:head=[1,1,2]输出:[1,2]示例2:输入:head=[1,1,2,3,3]输出:[1,2,3] 提示:链表中节点数目在范围[0,300]......
  • Vivado生成bitstream时报错[Opt 31-67] Problem: A LUT3 cell in the design is missi
    这个原因主要是因为有一个引脚没有用到,解决方法。1、打开Schematic。2、根据提示的模块去找,比如说我的报错。[Opt31-67]Problem:ALUT3cellinthedesignismissingaconnectiononinputpinI1,whichisusedbytheLUTequation.Thispinhaseitherbeenleftun......
  • 生成不了SSH密钥(万恶的SPB_Data)
    前提你能看到这,说明大概率你是个软硬通吃的苦逼人问题之前有安装过某些硬件类软件(orcad),卸载后删除了相关的文件夹,关联git的时候想创建ssh,发现路径下文件夹不存在,创建不了ssh解决右键此电脑->属性->高级系统设置,在最上面找到:高级,点击后,在右下角找到环境变量,点进去后,找到用户变......
  • 排序
         质数 三数排序 描述 请你输出三个数字按照有小到大的顺序输出 输入 三个整数a,b,c 输出 三个整数,两两之间由一个空格隔开,并且有由小到大输出 输入样例1 243输出样例1234 a,b,c=map(int,input().sp......