Magento 2.2, developing a custom theme whose parent is `Magento/blank`.

I intend to create a module which generates a random discount weekly.

Firstly, I must retrieve a random product from a particular sub-category. This data will be utilised on the backend. I must then store its information for a week.

For now, though, I'm only looking for a way to create a model from the information.

There are various answers for Magento 1.x, utilising the `rand()` function, but I haven't discovered any clear description for Magento 2.

Here is the class, based on Thiago's answer:

```
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Magento\Framework\Console\Cli;

class CreateDiscount extends Command{

    protected $_productCollectionFactory;
    protected $_categoryFactory;

    public function __construct(
        \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,
        \Magento\Catalog\Model\CategoryFactory $categoryFactory,
        \Magento\Framework\View\Element\Template\Context $context
    ) {
        $this->_categoryFactory = $categoryFactory;
        $this->_productCollectionFactory = $productCollectionFactory;
        parent::__construct($context);
    }

    /**
     * @var $categoryId
     */
    public function getRandomCategoryId() {
        $categoryId = rand(2, 4);
        settype($categoryId, "string");
        return $categoryId;
    }

    /**
     * @param int $categoryId
     */
    public function getRandomProduct($categoryId)
    {
        $products = $this->productRepository->getList($this->getProductSearchCriteria($categoryId));
        $randomId = array_rand($products->getItems(), 1);
        $productItems = $products->getItems();
        return $productItems[$randomId];
    }

    /**
     * @param $categoryId
     * @return \Magento\Framework\Api\SearchCriteria
     */
    private function getProductSearchCriteria($categoryId)
    {
        $searchCriteria = $this->searchCriteriaBuilder
            ->addFilter('category_id', $categoryId)
            ->create();
        return $searchCriteria;
    }

    public function randomProduct()
    {
        // Find a random product
        $product = $this->getRandomProduct($this->getRandomCategoryId());
        $sku = $product->getSku();
    }
}

```