Python 需要列表中最后x个元素的随机值

Python 需要列表中最后x个元素的随机值,python,python-3.x,list,Python,Python 3.x,List,输入列表看起来像 李=[12,44,55,64,34,54,56,43,56,9,87,89] 我需要一个函数,在这里我应该传递这个列表和x作为输入,并从给定列表的最后x个元素中获取一个随机元素 例如: val=getRandomli,4 val应该是这些值中的任意一个:56,9,87,89使用随机模块 或许您可以尝试以下方法: import random li = [12,44,55,64,34,54,56,43,56,9,87,89] val = rando

输入列表看起来像 李=[12,44,55,64,34,54,56,43,56,9,87,89]

我需要一个函数,在这里我应该传递这个列表和x作为输入,并从给定列表的最后x个元素中获取一个随机元素

例如: val=getRandomli,4

val应该是这些值中的任意一个:56,9,87,89

使用随机模块


或许您可以尝试以下方法:

     import random

     li = [12,44,55,64,34,54,56,43,56,9,87,89]

     val = random.choice(li[-4:])
如果打印val,答案应为最后四个数字之一,例如:

     89

要在不复制列表切片的情况下执行此操作,可以使用random.randint-x,-1生成范围为-x到-1(包括-x到-1)的索引。当您使用负数作为索引时,它将作为从列表末尾的偏移量进行计算。

因为还没有答案,所以不使用随机模块。。。在CPython 3.6、3.7、3.8上测试

该程序不使用导入,给出了可能令人满意的随机结果。请记住,没有一个随机数生成器是完美的,而这一个当然不是挑选的垃圾,但再次,没有进口

s=0 def randnn: 全球s s+=1 返回哈希字符串%n def get_随机序列,n: i=randnn-n+lensequence 返回序列[i] 李=[12,44,55,64,34,54,56,43,56,9,87,89] printget_randomli,4 说明:

s=0这是随机算法的初始状态种子

全球s;s+=1这会在每次调用randn时增加状态,因此我们不会每次都得到相同的值

hashstrs内置哈希创建给定对象的int。我们之所以首先转换为字符串,是因为int的散列通常是它本身。字符串的散列在程序运行时是一致的,但不会在重新启动在CPython中测试的程序时保持一致,因此即使总是从s=0开始,我们也会在重新启动程序时得到不同的数字序列

%n我们认为散列结果为1。伪随机,和2。大的因此,如果我们取n上的模,并且n远小于散列的大值,那么结果应该是从0到n-1的伪随机值


i=randnn-n+lensequence获取序列中最后n个索引的随机索引

你在家庭作业中试图解决这个问题的是什么?并不是你需要的一切都是你得到的。解释一下你尝试了什么。我已经通过随机模块接近了。但我需要在不使用模块的情况下完成它。没有任何模块的随机性。听起来像地狱般的家庭作业!。。。答案已发布后的问题。有关详细信息,请参阅。您忘记了ls[-x:]
     89