视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
分享Pythonrandom生成某区间内不重复的N个随机数的方法实例
2020-11-27 14:14:53 责编:小采
文档
 在近期进行的一个实验中,需要将数据按一定比例随机分割为两个部分。这一问题的核心其实就是产生不重复随机数的问题。首先想到的递归的方法,然后才发现Python中居然已经提供了此方法的函数,可以直接使用。具体代码如下:

#生成某区间内不重复的N个随机数的方法
import random;

#1、利用递归生成
resultList=[];#用于存放结果的List
A=1; #最小随机数
B=10 #最大随机数
COUNT=10

#生成随机数的递归数学,参数counter表示当前准备要生成的第几个有效随机数
def generateRand(counter): 
 tempInt=random.randint(A,B); # 生成一个范围内的临时随机数,
 if(counter<=COUNT): # 先看随机数的总个数是不是够了,如果不够
 if(tempInt not in resultList): # 再检查当前已经生成的临时随机数是不是已经存在,如果不存在
 resultList.append(tempInt); #则将其追加到结果List中
 counter+=1;# 然后将表示有效结果的个数加1. 请注意这里,如果临时随机数已经存在,则此if不成立,那么将直接执行16行,counter不用再加1
 generateRand(counter); # 不管上面的if是否成立,都要递归。如果上面的临时随机数有效,则这里的conter会加1,如果上面的临时随机数已经存在了,则需要重新再生成一次随机数,counter不能变化
generateRand(1);#调用递归函数,并给当前要生成的有效随机数的个序号置为1,因为要从第一个开始嘛
print(resultList)# 打印结果

#2、利用Python中的randomw.sample()函数实现
resultList=random.sample(range(A,B+1),COUNT); # sample(x,y)函数的作用是从序列x中,随机选择y个不重复的元素。上面的方法写了那么多,其实Python一句话就完成了。
print(resultList)# 打印结果

结果:


【相关推荐】

1. 详解Python标准库中数学与随机数 (math包,random包)

2. Python random() 函数的实例教程

3. 分享一篇Python中random(随机生成数)的实例教程

4. 分享Python中random模块生成随机数的实例教程

5. Python random模块(获取随机数)常用方法和使用例子

6. Python random模块常用方法

7. Python 模块学习:random 随机数生成

下载本文
显示全文
专题