|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import random
time = 0
number = random.randint(0,1000)
a=number
print(number)
while time<29:
number = random.randint(0,(1000-a))
print(number)
a = a + number
time = time +1
我这样写的代码到后面几个随机数就都是0了
我的思路,首先将1000想象成一个从0到1000的数轴,再生成29个0~1000的随机数并从大到小排序作为数轴的分隔点,将数轴分为30段,这样就得到了30个总和为1000的随机数。
- >>> import random
- >>> list1 = [random.randint(0, 1000) for i in range(29)]
- >>> list1.sort()
- >>> list2 = []
- >>> list2.append(list1[0])
- >>> for i in range(28):
- list2.append(list1[i + 1] - list1[i])
- >>> list2.append(1000 - list1[28])
- >>> list2
- [18, 112, 6, 31, 24, 28, 56, 68, 28, 11, 53, 35, 27, 20, 37, 56, 19, 24, 23, 4, 31, 123, 41, 23, 22, 0, 21, 15, 32, 12]
- >>> sum(list2)
- 1000
复制代码
|
|