创建一个不是随机的列表

时间:2017-12-01 15:05:25

标签: python list random

我的问题是在Python中创建一个半随机的字母列表。我想要20%的时间,这封信与以前的2个字母相同。

我不想只是随意的,因为如果我这样做,那么20%的时间内n-2是相同的字母就不会发生。

我正在考虑创建一个包含我想要的字母的第一个列表,然后创建一个新列表,它将从第一个列表中随机获取该字母,但我不知道如何添加20%的约束?

最后我需要的时间恰好是20%

一个 乙 乙 C 的 一个 一个 C 的 A

就像那样......例如,你有提示吗?

3 个答案:

答案 0 :(得分:0)

这个怎么样:

import random
import string

alpha = string.ascii_uppercase

my_list = [random.choice(alpha) for _ in range(2)]  # initializing; first two elements have to be random

n = 50  # select the length of the list; note that 2 elements are already inside!
for i in range(n):
  if random.random() < 0.2:  # 20% of the time repeat a letter
    my_list.append(my_list[len(my_list)-2])
  else:
    my_list.append(random.choice(alpha))  # 80% of the time, get a new

print(my_list)  # -> ['O', 'M', 'O', 'F', 'B', 'F', 'S', 'G', ...
#                                ^              ^                                 

并检查:

j = 0
for i, item in enumerate(my_list[2:], 2):
  if item == my_list[i-2]:
    j += 1
print(j/len(my_list))  # I got 23%. The bigger the list get's, the closer to 20% you'll get

答案 1 :(得分:0)

试试这个:

target

在这里,我只是决定从现有序列中选择一个新的字母或者从现有序列中获取2次字母(字符串target)。当然,我必须考虑File "/home/david/Django-Development/csruipa/ruth/urls.py", line 3, in <module> from ruth import views File "/home/david/Django-Development/csruipa/ruth/views.py", line 4 def index(request) ^ SyntaxError: invalid syntax enter code here 少于2个字母时的情况,否则在2次之前无需选择。

答案 2 :(得分:0)

您可以尝试这样做:创建随机列表并获取不符合条件的索引。从那些中,选择随机指数以满足条件减去已经满足它的指数的数量。将这些指数设置为先前的元素两个指数。

lst = [random.randint(1, 10) for _ in range(20)]
not_same = [i for i in range(2, len(lst)) if i not in same]
num_same = len(lst) - len(not_same)
make_same = random.sample(not_same, len(lst)//5 - num_same)
for i in make_same:
    lst[i] = lst[i-2]

但请注意,有可能会略微减少或稍微超过20%。如果是您的列表为[1,2,3,4,1],并且您将3设置为1,您获得两个“相同”元素而不是一个,如果列表为[1,2,3,4,3]并且您设置了第一个3 {1}}到1,你获得一个而你失去一个。