如何创建有条件的15位数字列表?

问题描述 投票:0回答:3

我想创建随机 20 个 15 位数字的列表,每个 15 位数字必须遵循 1 条规则。

规则是我希望这个15位数字由5个3位数字组成,其中第一个数字+第二个数字=第三个数字或者如果前两个数字的总和大于10那么第三个数字必须是,等于前两位数字之和的第二位数字。例如,如果第一位数字是 5,第二位数字是 8,则第三位数字必须是 3,因为 5 + 8 = 13。

我已经编写了使用相同规则用 15 位数字填充列表的代码,但它仅适用于前三位数字。

import random as rd def numchoose(start, end): arr=[] num=0 while num<20: a=(rd.randint(start, end)) if int(str(a)[0]) + int(str(a)[1]) == int(str(a)[2]): arr.append(a) num+=1 elif int(str(a)[0]) + int(str(a)[1]) > 10 and int(str(a)[2]) == int(str(int(str(a)[0]) + int(str(a)[1]))[1]) : arr.append(a) num+=1 else: continue print(numchoose(100000000000000, 999999999999999))
如何编写此代码,以便整个 15 位数字由遵循规定规则的 3 位数字组成,并且前三位数字不是唯一遵循规则的数字?

python list random numbers
3个回答
2
投票
这似乎有效,但我用你想要的数字长度替换了大数字。

import random as rd def numchoose(len): number = "" for i in range(int(len/3)): a = rd.randint(0, 9) while i == 0 and a == 0: a = rd.randint(0, 9) b = rd.randint(0, 9) c = a + b if c >= 10: c -= 10 number += str(a) + str(b) + str(c) return int(number) print(numchoose(15))
    

1
投票
比@eav28更紧凑,但感谢他们首先回答:

import random def NumberGen(Length): Number = "" for X in range(int(Length // 3)): A = random.randint(0, 9) ## To drop leading zero's: ## if X == 0 and A == 0: ## A = random.randint(1, 9) B = random.randint(0, 9) C = A + B if C > 9: C -= 10 Number += str(A) + str(B) + str(C) return Number print(NumberGen(15))
我希望这能回答你的问题


0
投票
抱歉回复晚了。我在评论中建议过这种方法,但从未遵循。

three_digit_combos = [] for first_digit in range(10): for second_digit in range(10): third_digit = (first_digit + second_digit) % 10 combo = first_digit * 100 + second_digit * 10 + third_digit three_digit_combos.append(combo) def numchoose(num_digits): assert(num_digits % 3 == 0) num = random.choice(three_digit_combos[10:]) # first choice can't start with 0 for i in range(1, num_digits // 3): num = num * 1000 + random.choice(three_digit_combos) return num
    
© www.soinside.com 2019 - 2024. All rights reserved.