python多个随机数
① 如何用python编写一个从随机数表1~100中抽取三个样本的随机数程序
#导入随机数模块
import random
#定义一个空的数组,用作取样表
reList = []
#为取样表赋值,1~100
for i in range(1,101):
reList.append(i)
#使用sample方法,取3个随机数
res = random.sample(reList,k=3)
print("三个随机数是:{}".format(res))
② Python 随机产生[0,100]以内的随机数,找到最大值和最小值并交换位置
过程如图所示:
获取1~100以内的随机数有两种方法:
方法1:可以通过Math类中的random方法获取随机数,再乘以100加1,然后转换为int类型即可。
方法2:可以通过Random类中的nextInt方法获取随机数。
(2)python多个随机数扩展阅读
函数使用补充说明
1、random是用于生成随机数的,可以利用它随机生成数字或者选择字符串。
random.random(),用于生成一个随机浮点数:range[0.0,1.0)。
random.uniform(a,b),用于生成一个指定范围内的随机浮点薯兄数,a,b为上下限,只要a!=b,就会生成介于两者之间的一个浮点数,若a=b,则生成的浮点数就是a。
random.randint(a,b),用于生成一个指定范围内的整数,a为下限,b为上限,生成的随机整数a<=n<=b;若a=b,则n=a;若a>b,报错。
random.randrange([start], stop [,step]),祥手老从指定范围内,按指定基数递增的集合中谨升获取一个随机数,基数缺省值为1。
random.choice(sequence),从序列中获取一个随机元素,参数sequence表示一个有序类型,并不是一种特定类型,泛指list,tuple,字符串等。
random.shuffle(x[,random]),用于将一个列表中的元素打乱。
random.sample(sequence,k),从指定序列中随机获取k个元素作为一个片段返回,sample函数不会修改原有序列。
2、Python中有join()和os.path.join()两个函数,具体作用如下:
join():连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串。
os.path.join():将多个路径组合后返回。
③ python如何随机选取n个不同的数字
python随机选取n个不同的数字的方法:
1、使用“import random”导入random包
2、通过for语句循环执行n次“random.randint()”语句获取n个随机数并将随机数输入到列表中
n=10示例如下:
3、用set函数去重就可以了
完整代码:
更多Python知识,请关注:Python自学网!!
④ 【Python 】性能优化系列:随机数
最近在做的项目重点部分与大量生成随机数有关,维度高达[1700000,10000],需要生成 10 x 30 次左右,这里遇到内存和速度的双重瓶颈,特地研究了一下如何优化随机数。
优化时间测试所需的分析工具在另一篇博客《性能优化系列一:分析工具》中提到。
原生的python中也有随机模块生成 random.randint 和 random.random 等,但是速度非常慢,numpy 速度可以大幅提升。一般都采用numpy生成随机数。
比较常用的就是以上几种。在需要生成大量随机数的情况下,或生成伪随机数的情况下,python 3.7 常用 RandomState 。
直接生成大规模非稀疏矩阵如下,经常遇到 MemoryError 的错误,大概是同时生成多个float64精度的大规模随机矩阵服务器内存不够,而random state 似乎也没提供调整类型的attr,
这时最好使用即使生成即使销毁,仅保留种子作为索引,同样,多个CPU之间共享大规模矩阵涉及到共享内存或数据传输同步较慢的问题,最好也共享seed而不是直接共享矩阵。
ps. 这里注意一般我们设置time.time()为种子时,对于并发性程序是无效的,不要在并发程序中同时定义,建议生成一个seed list 列表再从中取。
这里可以对大规模矩阵进行分片以进行后续的np 乘法,再切片赋值,以时间换内存。这种情况的麻烦在于如果设定随机数种衡基子会导致每个分片的随机数相同。可以利用一个最初seed(爷爷种子)randint生成 一组切片组数的seed(父亲种子),再每次从中取不同的随机数。
在上述切片方法尝试之后,可以解决内存问题。但是时间非常慢,特别是采取s = 1时在standard normal 上调用170万次的时间长达3000s,line search一下搜索了大约100000为切片值仍然太慢。在文档中发现了 BitGenerator 和 Generator ,大约早枣可以提速到原来的 1/3。
除了Numpy和基本模块之外,AES CTR 加密算法生成随机数也很快,但咐睁谨是并不能有比较方便的方式控制每次生成的一样。参见以下reference。
tensorflow 和 pytorch 也都有大规模生成随机tensor的方式。性能待考。
1. 超快生成随机数的方式CSDN博客
2. tensorflow 生成随机tensor
⑤ 用python批量生成32位随机数
import random
seed = "!@#$%^&*()_+=-"
for i in range(4):
text = ''.join(random.sample(seed, 32))
with open('test.txt', mode='a', encoding='utf-8') as f:
f.write(text)
f.write('
')
4:生成4次
32:位数
批量生成4次32位的随机数
⑥ python中如何生成多个,但总和是固定的随机数
很简单,不用那么蠢的代码。
如果你不需要最终产生的随机数是整数的话,只需要随机产生10个随机数,然后计算它们的合是多少,然后算下这个合族链谨和60之间兆基的比例,把所有的随机数乘以一个比例就可以了。给你两个方法参考,都是可以的。见方法1,方法2的代码。
如果你需要最终产生整数的话,那就随机产生9个随机数,在算比例的时候变一下分母分子,然后最后用原list除以比例的时候用整除就可以了。这样9个数全是整数,然后算一下这九唤辩个数和60的差值,把差值补充进去做为第十个数就可以了。见方法1'和方法2’。
import numpy as np
#方法1:产生0-1的10个随机浮点数,然后乘以比例达到最终合为60
x0=np.random.rand(10)
ratio=60/sum(x0)
x1=x0*ratio
#方法2:产生10个0-60之间的10个随机整数,然后乘以比例达到最终合为60
y0=np.random.randint(60,size=10)
ratio=60/sum(y0)
y1=y0*ratio
#方法1':产生0-1的9个随机浮点数,然后除以比例达到9个数为整数,最后补充一个60和这个
#list的和的差值,就可以了。
x0=np.random.rand(9)
ratio=sum(x0)/60
x1=x0//ratio
x1=x1.tolist()
x1.append(60-sum(x1))
#方法2':产生10个0-60之间的随机整数,然后除以比例达到9个数为整数,最后补充一个60和这个
#list的和的差值,就可以了。
y0=np.random.randint(60,size=9)
ratio=sum(y0)/60
y1=y0//ratio
y1=y1.tolist()
y1.append(60-sum(y1))
⑦ python产生10个[100~200]之间的随机数,找出这10个随机数中的中间值
在8000到2000之间产生10个随机数,用到random包。
random.random()用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成随机数。
n <= b。如果 a <b, 则 b <= n <= a。用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,Python生成随机数。
(7)python多个随机数扩展阅读:
注意事项:
1、range (10000000)后,内存不释放的原因:python对整数对象做了缓存,新创建出来的整数对象的内存不会蔽脊被释放,而是留着以后再次创建整数对象时继续使用。这样可以减少new操作,提高效率。
2、局部变量的访问速度,比全局变量、内建变量都要快,如果函数中,需要频繁使用某个全局变量或内建函数时,那么可以考虑先中弯将这个全局变量或内建函数赋值给一个局部变量,后面代码直接访问这个局部变量、
3、虽然python是动态语言,但是在执行python代码前,也有编译的过程。平时看到的pyc文件就是python编译后的结果。
⑧ 怎么用python生成随机数
在Python中,random模块用于生成随机数。下面介绍下random模块中常用的几个函数
- 01
打开我们python的ide
- 02
在打开的shell中,首先需要导入random库,才可以使用random中的方法,首先介绍下应用最多的函数,random.random(),可以生成一个0到1的随机符点数
- 03
random.uniform(a,b)函数,生成指定范围内的随机符点数,如下图
- 04
random.randint(a,b)函数,生成一个指定范围内的整数,如下图
- 05
random.choice(sqe)函数,从sqe序列中得到一个随机元素,如下图,序列元素可以包含很多种类,集合,列表,甚至元组都可以作为参数进行传递
⑨ python如何一次性取出多个随机数
Python内置的函数一次只能生成一个随机数,然而你可以方便地使用表理解(list comprehension)一次性生成多个随机数。示例的代码如下:
importrandom
[random.randint(0,100)for_inrange(10)]
#[57,93,22,55,41,64,47,32,93,61]
range函数输入不同的值,可以设置需要生成随机数的个数,上面的例子中生成了10个随机数。
⑩ python中怎么随机选取多个不同的数
python实现随机一柱双色球:
定义一个列表,列表red_ball=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33]
打乱red_ball列表值的顺序
提取打乱后的前6个值,赋值给新列表redB
从1-16随机产生一个整数,赋值给blueB,做为篮球
输出redB,blueB
importrandom
red_ball=[]#定州物漏义红球列表
red_ball=list(range(1,34))#给红球蚂宽列表赋值
random.shuffle(red_ball)#打乱列表顺序
redB=[]
blueB=[]
foriinrange(6):
redB.append(red_ball[i])#从列表red_ball中提取打乱顺序后的前6个值,册烂放到新列表redB中
else:
redB.sort()
blueB.append(random.randint(1,16))
print(redB,blueB)
# [9, 13, 17, 22, 23, 28] [8]