Случайные числа на основе вероятности

У меня проблемы с генерацией случайных чисел, которые не подчиняются дискретному равномерному распределению.

Так, например, скажем, у меня есть 5 чисел (для простоты), вероятность того, что будет сгенерировано число k, будет равна k/15. (k = от 1 до 5)

Моя идея состоит в том, чтобы сгенерировать случайное число j с помощью rand(), и если это число j равно:

1 =>, то генерируется число 1

2 или 3 => число 2

4 или 5 или 6 => число 3

7 или 8 или 9 или 10 => число 4

11 или 12 или 13 или 14 или 15 => число 5

Теперь масштабируйте это для генерации 1-10, 1-100, 1-1000. Это работает так, как я задумал? Я построил цикл, который в значительной степени делает это каждый раз, когда нужно сгенерировать число, я думаю, что это, вероятно, неэффективно, так как оно идет вверх, пока не найдет число j, сгенерированное в одном из диапазонов... Что может быть лучше? сделать это?

РЕДАКТИРОВАТЬ: или, может быть, создать массив один раз с правильными числами, а затем вытащить с помощью rand() лучшее решение?

9
задан user1071840 15 November 2012 в 09:24
поделиться