ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
28 апреля
1053108 Топик полностью
fk0, легенда (17.11.2020 13:08, просмотров: 172) ответил йцyкeн на Любая попытка превратить равномерное распределение [0..n-1] в равномерное же распределение [0..m-1] чистой функцией обречена на провал, если n%m != 0. Если у нас на входе всего 32768 разных значений X, которые мы хотим превратить в 1000 значений Y, нужно смириться с тем, что на некоторые Y отобразится 32 значения X, а на некоторые 33, и это ещё в лучшем случае. По ссылке как раз предлагается простой вариант: для m==1000 значения rand() в диапазоне [32000..32767] считать
Да речь не о равномерности, а о том, что выражения rand()%max следует избегать т.к. в rand() младшие биты якобы "плохие" (о чём RxTx писал). Соответственно идея в том, чтоб откинуть часть младших бит. Вариант с зацикливнием меня пугает для случая, когда за rand() стоит настоящий ГПСЧ. В линуксе программы висящие на чтении /dev/random потому, что "не хватает энтропии" все наверное видели, особенно после загрузки, и особенно ssh... 
[ZX]