|
|
|
Генератор случайной последовательности
|
|||
|---|---|---|---|
|
#18+
Есть задача написать генератор случайных чисел на javascript : Есть N - чисел от 1 до N нужно выбрать случайно M чисел. Какой алгоритм придумать , чтобы выбрать за одно обращение и чтобы числа в выборке были уникальными. Как вариант : в цикле использовать обычный генератор случайных чисел в диапазоне от [1..N] - и гонять его пока не получим M чисел. Чем плохо, если M = N - то есть требуется перемешать последовательность - то алгоритм будет работать долго. Сразу пришло в голову создать связанный список на N чисел от 1 до N и после каждой случайной выборки удалять этот элемент элемента и на i шаге проводить генерация числа из (N-i) чисел. возможно есть какое то более красивое красивое решение ? использовать xor или что то еще ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 21:35 |
|
||
|
Генератор случайной последовательности
|
|||
|---|---|---|---|
|
#18+
числа собирают в массив из N элементов. выбирают рандомный индекс i - число от 0 до N-1 включительно. берут arr[i] - выбранное число далее arr[i] = arr[arr.length-1]; повторяют, только уже до N-2, потом до N-3 и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 22:17 |
|
||
|
Генератор случайной последовательности
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 22:28 |
|
||
|
|

start [/forum/topic.php?fid=22&gotonew=1&tid=1447828]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
187ms |
get topic data: |
14ms |
get first new msg: |
9ms |
get forum data: |
4ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 536ms |

| 0 / 0 |
