Я пытаюсь сделать разброс сюжета о проблеме "звезд и столбов".По оси X у меня «количество детей, которым нужно раздать конфеты», по оси Y - количество конфет, которое нужно раздать.На оси Z у меня есть «несколько способов распределения.
Я использую вложенные циклы для генерации набора данных для построения графиков:
import itertools as it
import math
import numpy as np
import matplotlib as mlp
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x_coordinate = np.arange(16)
y_coordinate = np.arange(16)
dataset = []
for i in range(10):
for j in range(10):
mylist = [item for item in it.product(range(i), repeat = j) if sum(item) == (i-1)]
z_value = len(mylist)
x_value = i
y_value = j
dataset.append((x_value, y_value, z_value))
fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')
x = [item[0] for item in dataset]
y = [item[1] for item in dataset]
z = [item[2] for item in dataset]
ax.scatter(x,y,z,c='r')
ax.set_xlabel('Candies')
ax.set_ylabel('Children')
ax.set_zlabel('Search space')
Проблема заключается в том, что когда я проверяю свой набор данных, ясм. записи типа (1,5,1), (1,6,1) и т. д., которые подразумевают, что существует 1 способ распределить 1 конфету среди 5 детей или 1 способ распределить 1 конфету среди 6 детей. Но это не такправда, есть 5 способов распределить 1 конфету среди 5 детей и 6 способов распределить 1 конфету среди 6 детей. Я, конечно, делаю что-то ужасно неправильно, но я не могу понять это.