ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
1053100 Топик полностью
йцyкeн (17.11.2020 12:48, просмотров: 195) ответил fk0 на На мой взгляд, единственный разумный вариант тогда, что-то вроде (m * rand() >> 15) % m.
Любая попытка превратить равномерное распределение [0..n-1] в равномерное же распределение [0..m-1] чистой функцией обречена на провал, если n%m != 0. Если у нас на входе всего 32768 разных значений X, которые мы хотим превратить в 1000 значений Y, нужно смириться с тем, что на некоторые Y отобразится 32 значения X, а на некоторые 33, и это ещё в лучшем случае. По ссылке как раз предлагается простой вариант: для m==1000 значения rand() в диапазоне [32000..32767] считать 

"плохими", и вызывать rand() до тех пор, пока она не вернёт "хорошее" значение.