awk получает хорошее распределение случайных целочисленных значений между двумя входами - PullRequest
0 голосов
/ 16 апреля 2020

Как получить хорошее распределение случайных целочисленных значений между 2 входами, используя awk?.

Я пробую следующее

$ awk -v min=200 -v max=500 ' BEGIN { srand();for(i=0;i<10;i++) print int(min+rand()*100*(max/min))  } '
407
406
360
334
264
365
303
417
249
225
$

Есть ли лучший способ в awk

1 Ответ

3 голосов
/ 16 апреля 2020

Извините, что сообщаю вам, что ваш код неверен. Попробуйте с min = max = 10.

Примерно так будет работать. Вы также можете проверить однородность.

$ awk -v min=200 -v max=210 ' BEGIN{srand();
                                    for(i=0;i<10000;i++) a[int(min+rand()*(max-min))]++; 
                                    for(k in a) print k,a[k]}' | sort
200 1045
201 966
202 1014
203 1016
204 985
205 1010
206 988
207 1027
208 986
209 963

Обратите внимание, что min включительно, но max нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...