入力数字とその種類を表示するJAVA,C++

1から10までの乱数を10回発生させ、その結果を表示し、そのあとに、そこで出力された文字の種類を表示するプログラム

JAVA

import java.util.*;
public class Main {

    public static void main(String[] args) {
        
        Set<Integer> numSet=new HashSet<>();
        ArrayList<Integer> numList=new ArrayList<>();
        for(int i=0;i<10;i++){
            Random ran=new Random();
            int n=ran.nextInt(10);
            numSet.add(n);
            numList.add(n);
            
        }
        
        Iterator<Integer> litr=numList.iterator();
        while(litr.hasNext()){
            System.out.print(litr.next());          
        }
        System.out.println();
        Iterator<Integer> itr=numSet.iterator();
        while(itr.hasNext()){
            System.out.print(itr.next());
        }
    }

}

C++:

#include "stdafx.h"
#include<iostream>
#include<set>
#include<list>
#include<random>

using namespace std;
int main()
{
    set<int> numset;
    list<int> numlist;
    for (int i = 0; i < 10; i++) {
        std::random_device rnd;
        std::mt19937 mt(rnd());//mt19937型オブジェクトをデフォルト構築した場合、10000番目に生成される擬似乱数の値は4123659995であること。
        uniform_int_distribution<int> dice(0,10);//一様分布生成器 uniform distribution 
        //std::uniform_real_distribution<double> score(0.0,10.0);->0.5,5.3.....
        int n = dice(mt);
        numset.insert(n);
        numlist.push_back(n);
    }

    for (list<int>::iterator itr = numlist.begin(); itr != numlist.end(); itr++) {
        cout << *itr ;
    }
    cout << endl;
    for (set<int>::iterator itr = numset.begin(); itr != numset.end(); itr++) {
        cout << *itr;
    }
    cout << endl;
    return 0;
}