这是一个简单的实现,它通过构建一个由 98 个随机数组成的数组,找到它们的总和,然后将每个数字除以总和,从而使整个数组标准化为 1。
import random
# generate a random array of 98 numbers
numbers = [random.random() for _ in range(98)]
print(numbers)
# [0.2378205280188267, 0.08942239291741982, ...]
print(sum(numbers))
# 48.8051742287
# normalise the array to sum to 1
normalised = [r / sum(numbers) for r in numbers]
print(normalised)
# [0.004872854810521523, 0.0018322318141581963, ...]
print(sum(normalised))
# 1.0
但如果您要进行大量计算,您可能应该考虑使用 NumPy。
编辑:与上面的等效代码,但更易于阅读且无需列表理解:
# build a list/array of random numbers
numbers = []
for _ in range(98):
numbers.append(random.random())
# get the sum of the array
print(sum(numbers))
# 48.8051742287
# normalise the original list using the sum
normalised = []
for n in numbers:
normalised.append(n / sum(numbers))
print(sum(normalised))
# 1.0