random函数汇总

random函数汇总1 random randomrandom random 用于生成一个 0 到 1 之间的随机浮点数 0 lt n lt 1 gt gt gt random random 0 random uniformrando uniform a b 用于生成一个指定范围内的随机浮点数 若 a lt b 则 a lt n lt b 若 a gt

1. random.random

random.random()用于生成一个0到1之间的随机浮点数:0<=n<1

>>> random.random() 0.96296

2. random.uniform

random.uniform(a,b)用于生成一个指定范围内的随机浮点数若a<b,则a<=n<=b;若a>b,则b<=n<=a.

>>> random.uniform(12,5) 6.2529 >>> random.uniform(5,12) 5.9382 >>> random.uniform(5,5) 5.0

3. random.randint

random.randint(a,b)用于生成一个指定范围内的整数:a<=n<=b;下限必须小于等于上限值,random.randint(20,10)是错误的

>>> random.randint(10,10) 10 >>> random.randint(10,21) 15 >>> random.randint(100,100) 100

4. random.randrange

random.randrange([start],[stop],[step])从指定范围内,按指定基数递增的集合中获取一个随机数。等于random.choice(range([start],[stop],[step]))

>>> random.randrange(1,100,10) 61 >>> random.randrange(1,100,10) 21 >>> random.choice(range(1,100,10)) 71 >>> random.choice(range(1,100,10)) 41 >>> random.randrange(100,100) Traceback (most recent call last):   File "<stdin>", line 1, in <module>   File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/random.py", line 199, in randrange     raise ValueError("empty range for randrange() (%d,%d, %d)" % (istart, istop, width)) ValueError: empty range for randrange() (100,100, 0)

5. random.choice

random.choice(seq)从序列中获取随机一个元素

choices(population, weights=None, *, cum_weights=None, k=1)这个方法平时比较少用,population是一个可迭代对象,weights是相对权重,cum_weights是累积权重,k表示随机获取的个数。

例如,相对权重“[10, 5, 30, 5]“相当于累积权重“[10, 15, 45, 50]“。 在内部,相对权重在进行选择之前会转换为累积权重,因此提供累积权重可以节省工作量。random官方文档

需要注意2点:

1. weights和cum_weights不能同时使用。

2.population与weights,population与cum_weights需一一对应

>>> random.choice("abcde") 'd' >>> random.choice([1,2,3,4]) 2 >>> random.choice((1.1,2.2,3.3,4.4)) 3.3 >>> for i in range(10): ... print(random.choices("abcd",weights=[1,1,7,1],cum_weights=[70,10,5,15],k=1)) ... Traceback (most recent call last): File "<stdin>", line 2, in <module> File "E:\Programs\Python36\lib\random.py", line 356, in choices raise TypeError('Cannot specify both weights and cumulative weights') TypeError: Cannot specify both weights and cumulative weights >>> for i in range(10): ... print(random.choices(['x','y','z'],cum_weights=[70,10,5,15],k=1)) ... Traceback (most recent call last): File "<stdin>", line 2, in <module> File "E:\Programs\Python36\lib\random.py", line 358, in choices raise ValueError('The number of weights does not match the population') ValueError: The number of weights does not match the population >>> for i in range(10): ... print(random.choices(['x','y','z','u'],cum_weights=[70,10,5],k=1)) ... Traceback (most recent call last): File "<stdin>", line 2, in <module> File "E:\Programs\Python36\lib\random.py", line 358, in choices raise ValueError('The number of weights does not match the population') ValueError: The number of weights does not match the population >>> for i in range(10): ... print(random.choices("abcd",weights=[1,1,7,1],k=1)) ... ['b'] ['c'] ['c'] ['c'] ['c'] ['c'] ['a'] ['a'] ['c'] ['c'] 由上可以明显发现,随机获得c的概率更高 >>> for i in range(10): ... print(random.choices(['x','y','z','w'],cum_weights=[70,10,5,15],k=1)) ... ['w'] ['w'] ['w'] ['w'] ['x'] ['x'] ['w'] ['x'] ['x'] ['x']

6. random.shuffle

random.shuffle(x[, random])用于将一个列表中的元素打乱

>>> l=['a','b','c','d','e'] >>> random.shuffle(l) >>> l ['d', 'b', 'e', 'c', 'a']

7. random.sample

random.sample(seq,k)从指定序列中随机获取指定长度的,且不重复出现的片段

>>> l=['a','b','c','d','e'] >>> s=random.sample(l,2) >>> s ['c', 'a'] >>> l ['a', 'b', 'c', 'd', 'e']

8. random.seed

random.seed(n)用于改变随机数生成器的种子,指定随机数生成时所用的算法

>>> random.seed(2) >>> random.random() 0.92494 >>> random.random() 0.93494 

9. 实践

写一个函数:随机生成n个整数,n个整数的和等于m

import random def random_num(n, m): # 随机生成n个数字 numbers = [random.random() for _ in range(n)] # 计算出 m 与 n个随机数的商 k = m / sum(numbers) # n个随机数分别乘以k,n个数的和接近于m result = [int(i * k) for i in numbers] # 从result中随机选择一个数,加上m与sum(result)的差数,从而实现sum(result) = m result[random.randint(0,n-1)] += m - sum(result) print("sum(result)=", sum(result)) print("result=", result) >>> random_num(5, 100) sum(result)= 100 result= [5, 21, 15, 33, 26] >>> random_num(2, 15) sum(result)= 15 result= [2, 13] >>>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232717.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MySQL最全整理!西安java培训机构排名榜

    MySQL最全整理!西安java培训机构排名榜MySQL为何不选择平衡二叉树既然平衡二叉树解决了普通二叉树的问题,那么mysql为何不选择平衡二叉树作为索引呢?索引需要存储什么让我们想一想,如果我们要把索引存起来,那么应该存哪些信息呢,它应该存储三块信息:索引的值:就是表里面索引列对应的值。数据的磁盘地址(通过磁盘地址找到当前数据)或者直接存储整条数据。子节点的引用:我们需要从根节点往下走,所以需要知道左右子节点的地址。根据这三点,可以有如下大致的一个简单的结构图:上图中数字表示的是索引的值,0x开头的表示磁盘地址,根

    2022年9月25日
    3
  • 小学没跟上编程的步伐,长大了这样弥补,网友:一切都是为了生活「建议收藏」

    小学没跟上编程的步伐,长大了这样弥补,网友:一切都是为了生活「建议收藏」浙江省今年9月份开始的新学期,三到九年级信息技术课将同步替换新教材,其中,八年级将新增Python课程内容。新高一信息技术编程语言由VB替换为Python,大数据、人工智能、程序设计与算法等内容按照教材规划五六年级开始接触。随着我国北京、上海、广州、重庆、江苏等多地政策推广少儿编程教育的力度逐步增大,家长们愈发重视编程教育,一方面可以为高考选中的信息技术课程做铺垫,另一方面从小培养大数据意识。因为学习少儿编程除了帮孩子适应未来时代发展潮流,还可以培养孩子的抽象思考能力,帮助孩子训练整合信息、融汇贯通

    2022年5月16日
    45
  • h2数据库使用_数据库教程

    h2数据库使用_数据库教程H2数据库是一个开源的关系型数据库。H2是一个采用java语言编写的嵌入式数据库引擎,只是一个类库(即只有一个jar文件),可以直接嵌入到应用项目中,不受平台的限制应用场景:可以同应用程序打包在一起发布,可以非常方便地存储少量结构化数据可用于单元测试可以用作缓存,即当做内存数据库H2的产品优势:纯Java编写,不受平台的限制;只有一个jar文件,适合作为嵌入式数据库使用;h2提供了一个十分方便的web控制台用于操作和管理数据库内容;功能完整,支持标准SQL和JDBC。麻雀虽小五

    2022年10月10日
    3
  • DropDownList 详解「建议收藏」

    DropDownList 详解「建议收藏」DropDownList控件用于创建下拉列表。DropDownList控件中的每个可选项都是由ListItem元素定义的!提示:该控件支持数据绑定!DropDownList控件是一个下拉式的选单,功能和RadioButtonListWeb控件很类似,提供用户在一群选

    2022年7月18日
    14
  • vector二维数组初始化赋值_vector实现二维数组的赋值

    vector二维数组初始化赋值_vector实现二维数组的赋值一。二维vector初始化1.采用构造函数vector&lt;vector&lt;int&gt;&gt;vec(10,vector&lt;int&gt;(8));//10行8列,全部初始化为零2.添加元素(每次添加一行)inta[]={1,2,3,4};vector&lt;int&gt;ivec(a,a+4);//数组初始化vector,见最下面(…

    2026年1月17日
    3
  • java快捷键怎么设置_键盘快捷键怎么设置

    java快捷键怎么设置_键盘快捷键怎么设置概述我现在同时用eclipse和idea,而且idea的快捷键与eclipse的快捷键不一致,此时需要先把idea的快捷键的设置的eclipse的一样。具体操作就是可以这idea的settings设置里选择keymap右边选择eclipse,此时大部分的快捷键就一致了。具体操作如图:如果还想更加的一致,就需要导入一个jar包了具体操作见图:首先选择file中的importsettings:然后选择jar包重启一下就行了当快捷键冲突当快捷键冲突时,有两种解决方法,一是修改eclip

    2025年7月17日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号