python 怎么从集合中随机数

作者&投稿:万菡 (若有异议请与网页底部的电邮联系)
python怎么随机取列表的值~

第一步:
我分析如果从一堆数里随机抽取几个,并且按原来的顺序输出的话,那么至少要随机两次才能完成,第一次随机的值是确定随机几个数,第二次随机是确定随机的值。
第二步:
随机抽取几个可以用random.randint(1,n)这个函数来实现,这个n代表所要随机列表的长度。
第三步:
上一步出来一个数决定此次随机出几个值出来,现在假定是n,再次随机就是从列表里随机抽取n个值这个可以用random.sample(dict,n)这个方法实现,这个函数可以传入一个字典,和一个数字返回一个列表。
第四步:
得到的结果需要按原来的顺序输出,那么存储就需要考虑用dict了,因为字典的k-v特性可以实现找到原来的顺序,我具体的实现如下:
import random#random_number(a)函数的功能传入一个数,返回1到这个数的随机数def random_number(a): return random.randint(1,a)#print(random_number(4))#random_list(a,b)函数的功能,传入一个字典a,和一个数值b,#1>> ================================ RESTART ================================>>> a f None>>> ================================ RESTART ================================>>> g i None>>> ================================ RESTART ================================>>> a j h l v b 2 5 x None

很简单,不用那么蠢的代码。
如果你不需要最终产生的随机数是整数的话,只需要随机产生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))

举例说明:从集合中随机获得10个数

1、定义一个列表集合iRandom = []

2、向iRandom中插入1-60,共60个数字

3、打乱列表顺序

4、截取列表前10个数,即为随机获取到的列表集合随机数

import random

iRandom = [] #定义随机数列表
listRandom = list(range(1,61)) #生成整数型1-60的列表组合
random.shuffle(listRandom)  #打乱列表顺序
iRandom = listRandom[0:10] #截取打乱后的前10个值,赋值给新列表iRandom
print('随机列表组合:',iRandom)


使用random()函数,或者:

choice(seq) 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
randrange ([start,] stop [,step]) 从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1
random() 随机生成下一个实数,它在[0,1)范围内。
seed([x]) 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
shuffle(lst) 将序列的所有元素随机排序
uniform(x, y) 随机生成下一个实数,它在[x,y]范围内。

Python生成随机数和随机数质量的方法,random.random()用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。

以前有过类似的问题 可以参考下:

http://blog.csdn.net/deniuhe/article/details/77985784