Lis中的随机数重复

2024-10-02 00:23:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个代码,作为Python的初学者,我遇到了一些麻烦。所以准则应该是:

它用randint生成一个随机数并放入列表l=[] 只要射程远就可以了。在

函数repetition(l),该函数应检查所有数字并返回第一个重复元素的try数(position(index))。在

函数转发器(count),重复1-365个重复函数足够长(1-365),并在数组的帮助下枚举,直到出现重复。在

import random

l = []

for _ in range(365):
    n = random.randint(1, 365)
    if n not in l:
    l.append(n)

print(l)

我认为只有在一个函数形式中是一样的:

^{pr2}$

有没有可能用字典代替列表?在

卡在步骤检查元素和创建中继器功能


Tags: 函数代码in元素列表indexposition数字
3条回答

我还是不太确定,但我想这是你想要的:

def repetition(numb):
    l = [random.randint(1, numb)]
    while True:
        n = random.randint(1, numb)
        l.append(n)
        if n == l[0]:
            return l

这将创建一个列表,其中第一个值和最后一个值与中间的其他随机数相同:

^{pr2}$

numb == 10示例:

[8, 10, 5, 3, 2, 5, 8]
Took 7 random numbers to repeat 8

我不完全明白问题是什么,但我是根据我的理解写的:

import random

TRIES = 365

def generate_random_numbers(n):
    """Generates a list of n random numbers"""

    random_numbers = []
    for _ in range(n):
        random_number = random.randint(1, n)
        random_numbers.append(random_number)

    return random_numbers

def repetition(random_numbers):
    """Given a list of random numbers, it will return the index of the first repeated element"""

    for index, random_number in enumerate(random_numbers):
        if random_number in random_numbers[:index]:
            # You can print the list up to but not including the first repeated element
            # using list slicing: print '{}'.format(random_numbers[:index])
            return index

def repeater(n):
    indices_of_first_duplicates = []
    for i in range(n):
        random_numbers = generate_random_numbers(n)
        indices_of_first_duplicates.append(repetition(random_numbers))

    return indices_of_first_duplicates


repeater_result = repeater(TRIES)

print '{}'.format(repetition(repeater_result))

在上面的代码中,记录了genearte_random_numbers和{}的操作。repeater生成{}随机数列表。对于每个列表,它查找第一个重复的索引,并将所有这些索引存储在一个列表中并返回该列表。最后,根据我的理解/猜测,您希望在列表return repeater中看到第一个副本的索引是什么(即,经过多少次尝试,同一个随机数在同一索引下生成两次)

我可能完全走错路了,所以如果我误解了你的问题,我很抱歉。在

我添加了print语句以查看发生了什么。在

import random
numb = 20
def repetition(numb):
    l=[] # create a list
    for i in range(1,numb+1):
        i = random.randint(1, numb+1)
        l.append(i) # add i to list
        print l,i
        if len(l) > 1 and i == l[0]: # if list is longer than one element and i == first element
            return len(l) # return length of the list
repetition(numb)
[19] 19
[19, 21] 21
[19, 21, 19] 19
Out[21]: 3

相关问题 更多 >

    热门问题