Un numero N e un intervallo a a b verranno inseriti dall'utente, con a < b < N .
Lo scopo del programma è generare serie casuali di numeri interi positivi che sommano a N , con ciascun numero intero positivo nell'intervallo a e b .
Ad esempio,
N = 26
a = 1
b = 10
E qui ci sono alcuni output possibili del programma:
1,1,10,1,1,1,1,10
3,2,1,10,5,5
10,10,6
1,2,3,4,5,6,5
Un modo per farlo è:
-
Genera 2 y [0] , y [1] nell'intervallo
-
Se y [0] + y [1] > N , ricomincia da capo.
-
Se y [0] + y [1] -N < a , ricomincia da capo
-
Se y [0] + y [1] -N < b , restituisci il set y [0], y [1], N-y [0] -y [1]
-
Altrimenti, genera y [i] nell'intervallo
-
Se y [0] + y [1] + ... + y [i] -N < b , restituisci il set y [0], y [1], ..., N-y [0] -y [1] -...- y [i]
-
Altrimenti, ripeti 5-6
Il problema è che la funzione casuale è lenta. C'è un modo più efficiente per farlo con un numero inferiore di random?