列表中的随机数重复

时间:2014-05-05 21:17:43

标签: python random

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

它使用randint生成一个随机数并放入列表l = [] 并且只要范围这样做。

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

函数转发器(计数),重复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)

我认为这只是在一个funktion形式中的相同内容:

numb = 365
def repetition(numb):
    for i in range(1,numb+1):
        i = random.randint(1, numb+1)
        if i not in l:
        l.append(n)

#def repeater(count):

是否也可以使用字典而不是列表来进行?

坚持步骤检查元素并创建转发器功能

3 个答案:

答案 0 :(得分:0)

我还不完全确定,但我认为这可以做你想要的:

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

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

l = repetition(numb)
print(l)
print("Took {0} random numbers to repeat {1}".format(len(l), l[0]))

numb == 10的示例:

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

答案 1 :(得分:0)

我添加了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

答案 2 :(得分:0)

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

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_numbersrepetition所做的事情。 repeater生成n随机数列表。对于每个列表,它查找第一个重复的索引并将所有这些索引存储在列表中并返回该列表。最后,根据我的理解/猜测,您希望在列表中看到返回repeater,第一个副本的索引是什么(即,在相同的索引处生成两次相同的随机数之后多少次尝试。 )

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