Генерация нескольких случайных целых чисел с фиксированной суммой = 100 в массиве numpy - PullRequest
0 голосов
/ 20 сентября 2019

Исходя из кодов, я хочу рандомизировать целое число там, где указан конкретный диапазон, но в последних трех массивах должно быть всего 100.сумма трех последних массивов не может превышать 100. Я не знаю, как решить эту проблему.

self.position = np.array([rd.randint(0,2), rd.randint(0,2), rd.randint(0,100), rd.randint(0,50), rd.randint(0,1)])

1 Ответ

2 голосов
/ 20 сентября 2019

Вы можете сгенерировать n случайных чисел с заданной суммой, используя следующую функцию

import random

def numbers_with_sum(n, k):
    """n numbers with sum k"""
    if n == 1:
        return [k]
    num = random.randint(1, k)
    return [num] + numbers_with_sum(n - 1, k - num)

Это даст следующий вывод

In [1]: numbers_with_sum(3, 100)                                               
Out[1]: [75, 9, 16]

Теперь сгенерировать случайный массив с суммой последних3 числа по 100 просто создают обычный случайный массив с (n - 3) элементами и добавляют его к массиву, который вы получаете из number_with_sum(3, 100).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...