One way; not elegant, but effective.
DATA new;
a=3; * your constant, for example;
DO i=1 to 10; *10 is max of index.
y=a*RANNOR() + RANNOR();
OUTPUT;
END;
DROP i a;
RUN;
will generate a data set with one value of y for each value of the index. If you want to keep x_i and b_i, you need to do the assignment outside of the assignment statement for y.
Note that the two executions of RANNOR generate different sequences of normal deviates. See documentation for details.
Doc Muhlbaier
Duke