ну, я бы увеличил бы границы допустим в 10 раз (чем больше, тем мы больше растянем график, и сделаем его плавней), и пустил бы цикл, пока результат бы не попадал в нужные пределы... типа:
Dim Value(4)
For q=0 To 10000
X=aRnd(1,4)
Value(X)=Value(X)+1
Next
For q=0 To 4
Print q+" возвращалось приблизительно в "+ Value(q)/100+"% случаев..."
Next
WaitKey()
End
function arnd%(b%,e%)
b1%=-b%*10
e1%=e%*10
repeat
r%=rnd(b1%,e1%)
until r%>=b% and r%<=e%
return r%
end function
вот, накидал в броузере... хз пойдет или нет... но алгоритм думаю ясен...
в алгоритме есть охренительный недостаток... будет очень медленно работать...
можно еще разорвать этот график и сложить его... порвать посередине и первый после среднего элемента прибавить к первому сначала и т.п... но это только графически, а как это кодом замутить - хз...