import java.io.*;

public class LosoweDoPliku {
    public static void main(String[] args) {
        if (args.length != 4) {
            System.err.println("wywołanie programu:");
            System.err.println("> java StrumienieZapisLosowych plik n a b");
            System.err.println("    plik - nazwa pliku docelowego");
            System.err.println("    n - ile liczb wylosować (liczba całkowita >0)");
            System.err.println("    a, b - zakres losowanych wartości (liczby całkowite a < b)");
            System.exit(1);
        }
        File plik = new File(args[0]);
        if (plik.exists()) {
            System.err.println(String.format("plik %s już istnieje", plik.getName()));
            System.exit(2);
        }
        int n = Integer.parseInt(args[1]);
        int a = Integer.parseInt(args[2]);
        int b = Integer.parseInt(args[3]);
        if (n <= 0 || a >= b) {
            System.err.println("parametr n musi być >0");
            System.err.println("parametry a i b muszą być a < b");
            System.exit(2);
        }
        try (DataOutputStream dos = new DataOutputStream(new FileOutputStream(plik))) {
            dos.writeInt(n);
            for (int i = 0; i < n; i++) {
                int x = a + (int) (Math.random() * (b - a + 1));
                dos.writeInt(x);
            }
        }
        catch (IOException ex) {
            System.err.println(String.format("błąd wykonania: %s", ex.getMessage()));
            ex.printStackTrace();
            System.exit(3);
        }
    }
}
