python随机生成字母和数字的混合字符串,python随机生成一个字母

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: