python随机生成字母和数字的混合字符串,python随机生成一个字母
八个答案:
0:(分数:14))。
我生成一个n个随机数的列表,然后从最高到最低排序。
答案1:(得分:3))。
很少需要关注的事情。从X 0开始,每一步开始的算法从(0,X)得到随机数,不能用X替换,为什么?因为,(假设random正常运行,每一步的期望值位于区间)0,x)中间。也就是说,预计这些数的数组将以0的速度收敛到(1/2) n。事实上,即使初始值很大,也很容易看出大多数数字都接近0。这意味着这些数字分布不均,往往是理想属性。
即使内存使用量为o(n )1)(生成数字N的复杂度比o(n) and更重要),这是一个很大的缺点。
另一种解决方案是只取N个随机数,并对它们进行排序。这种算法的复杂度为o (nlog(n)),或者与基本排序算法的复杂度相同,但如果元素按顺序排列而不是排序,则可以简化为o(n))。但是,内存使用量必须为o(n)——记住所有元素。然而,这些数字分布均匀。这是一个很大的优势!
根据Jon Louis Bentley写的论文《generatingsortedlistsofrandomnumbers》,这里的算法可能是最好的算法。至少我知道。然后生成均匀分布的数字:
导入匹配
随机导入
defgenerate(最小值=0,最大值=10,数值=100):
开始=0
forIinxrange(数字,0,-1):
start=start math . log(random . random())/I
next=math . exp(start)max-min)min
一德下一步
对于generate()中的数字:
打印号码
注意这个算法的复杂度还是o(n)。但是,内存利用率是o) 1。这些数字是未知的,但它们均匀地分布在区间(最小值,最大值)中。唯一的缺点是,在开始之前,你需要知道你想要生成多少个数字。
让我们来看看这个帖子:
可能有用。
答案二:(得分:2))。
图片:
从随机导入随机
最小值=0
最大值=10
oldval=1 .
虽然正确:
oldval=oldval*random(
Randval=min (max-min) *oldval
答案三:(得分:1))。
这里有几个选择。这将生成接近卡方分布的值。以下值选自小于先前值的范围。
随机导入
random_range=range(10)
numbers=[random . choice(random _ range[:I]]for iinrange(10,0,-1) ]
这也可以使用浮点数来完成。
随机导入
最大值=10.0
最小值=0.0
期望=100
步长=(最大-最小)/所需
numbers=[random . random()*(I * step)]for iinrange(desired)]
或者,从滑动窗口中选择随机值以均匀分布它们。
导入随机,编号
最大值=10.0
最小值=0.0
期望=100
步长=浮动/期望
窗口=1.0
numbers=[x(random . random(* window)--(window/2.0)for xinumpy . arange(max,min,step ) ]
如果您需要一个单调递减的数字列表,将它设置为window=step将会提供一个列表。祝你好运!
答案4:(得分:1))。
谢谢大家的回答。但是,我找到了解决自己问题的方法。我觉得很简单。我想和你分享一下。
随机导入
i=1000000
而我0:
i=random.randint(0() 0,I)))))))).
打印I
答案5:(得分:1))。
根据@ cxdkf的思想,这适用于任何整数范围,正数和/或负数:
随机导入
random _ decessing _ integers _ from _ range=(iforiinxrange(max,min - 1,-1) if random.random())
要指定输出的数量,至少要使整个范围的分布均匀。
随机导入
ef random _ decessing _ integers _ from _ range(min,max,num_outputs):
Range _ size=ABS(最大值-最小值)
如果范围大小数量输出:
raisevalueerror(distancefrommintomaxmustbeequaltoorgreaterthearn _ outputs。)
输出计数=0
对于迭代,valueinenumerate(xrange ) max,min - 1,- 1):
# ifweonlyhaveoughvalueslefttostatisthenumberrequested,
#产量值
ifnum _ outputs-output _ count==range _ size-iteration 13360
输出计数=1
塑变值
#否则随机产生值,加权weightedbyhowfarintotherangeweare
# andhowmanyvalueswehavelefttoyieldofthetotalrequested
否则:
ratio _ consumed=float(迭代1)/range_size
ratio _ yielded=float(输出计数)/数量输出
ifrandom . random((1-ratio _ yielded))* ratio _ consumed:
输出计数=1
塑变值
#如果我们veyieldedtrequestnumberofvalues,停止
如果输出计数==输出数量:
布莱克
这种方法工作得很好,但是如果num_outputs不在range_size的10%到25%之间,它似乎会崩溃。说明下限区间中间确实有利,上限启动短路条件,结果确实有利于区间下端。
答案6:(得分:0))。
我不是python专家.但这是我的基本想法:
a=10000
foriinrange (1,50):
b=random.randint(1,a)))))))).
打印(b)是
a=b
答案7:(得分:0))。
这将减少0.1范围内的随机数。
随机导入
定义生成() :
n=1.0
而n:
n=random . random()n
产量
迭代器=生成(
iterator.next(
请注意,函数会在一段时间后停止生成数字,因为浮点数的精度有限,所以数字必然会变成0。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。