|
|
|
Рандомизе...
|
|||
|---|---|---|---|
|
#18+
Господа программисты! Нужен алгоритм. Суть такова: заполнить массив случайными(!) числами от 0 до N, где N - число элементов в массиве. Главное условие - элементы массива не повторяются! И ещё. Написать-то алгоритм - не сложно, но хотелось бы (а точнее сказать НЕОБХОДИМО), чтобы он не тормозил при большом N. Т.е. был максимально возможно рациональным... Вот, собственно и всё. Думаю, что вам самим будет это (имеется ввиду процесс оптимизации) интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2005, 16:27 |
|
||
|
Рандомизе...
|
|||
|---|---|---|---|
|
#18+
погугли генератор случайных чисел. Поскольку криптостойкость тебе не нужна, бери самый простой алгоритм регистра сдвига. Тебе хватит. Он же будет и самым быстрым. ------------------ - А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2005, 19:49 |
|
||
|
Рандомизе...
|
|||
|---|---|---|---|
|
#18+
авторзаполнить массив случайными(!) числами от 0 до N, где N - число элементов в массиве. Главное условие - элементы массива не повторяются заполни попрядку и перемешай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 07:20 |
|
||
|
Рандомизе...
|
|||
|---|---|---|---|
|
#18+
Еще в добавок.. Давным давно, на программируемом калькуляторе (МК61) была такая игра - морской бой, - аналог игры на листочке но только для однотрубных кораблей. Как вы думаете калькулятор, у которого память была на 10 чисел мог стрелять по полю 10x10 и при этом не бить в одно поле за игру по 2 и более раза? Ответ: использовался генератор случайных чисел такой, что он генерил первых 100 неповторяющихся случайных чисел. все наши на www.corba.kubsu.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 10:23 |
|
||
|
Рандомизе...
|
|||
|---|---|---|---|
|
#18+
Ggg_oldпо полю 10x10 По биту на поле - это всего сто бит. Какая была разрядность регистра? Если 32 бита, то 3-х регистров хватит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 10:55 |
|
||
|
Рандомизе...
|
|||
|---|---|---|---|
|
#18+
где ж ты видел МК-61 с 32-разрядными регистрами ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 10:57 |
|
||
|
Рандомизе...
|
|||
|---|---|---|---|
|
#18+
Карабас Барабасгде ж ты видел МК-61 с 32-разрядными регистрами ? Я про двоичные разряды. Какое максимальное число можно было ввести? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 10:59 |
|
||
|
Рандомизе...
|
|||
|---|---|---|---|
|
#18+
Землекоп Ggg_oldпо полю 10x10 По биту на поле - это всего сто бит. Какая была разрядность регистра? Если 32 бита, то 3-х регистров хватит. 4-х точнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 11:02 |
|
||
|
Рандомизе...
|
|||
|---|---|---|---|
|
#18+
Если мне не изменяет память, то там было 8 десятичных разрядов, т.е. макс. число 99999999, хранилось все в BCD, следовательно, действительно, 32 разряда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 11:36 |
|
||
|
Рандомизе...
|
|||
|---|---|---|---|
|
#18+
Ну там программа максимум занимала 90 с копейками шагов. Выбор случайного числа с последующим парсаньем содержимого регистров для проверки поля и все это со скоростью около 2 шагов в секенду.... нет уж. Генератор случайных неповторяющихся значений - вот решение. P.S. И что-бы поиграться надо было программу ручками ввести, и так каждый раз. Ностальгия ... все наши на www.corba.kubsu.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 15:24 |
|
||
|
Рандомизе...
|
|||
|---|---|---|---|
|
#18+
Ggg_oldНу там программа максимум занимала 90 с копейками шагов. 105 шагов, извините :) МК-61 и МК-52 по 105 шагов, Б3-34 и МК-54 по 98 шагов и Б3-21 кажется около сорока шагов, не помню уже :( Ggg_oldИ что-бы поиграться надо было программу ручками ввести, и так каждый раз. Ностальгия ... МК-52 умел запоминать программы в ППЗУ, а еще мы программы на магнитофон записывали :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 18:11 |
|
||
|
Рандомизе...
|
|||
|---|---|---|---|
|
#18+
2 Карабас Барабас: хорошо, как перемешать? 2 maXmo: посмотрел, хм... не нашёл ничего РЕАЛЬНОГО 2 остальным: блин, развели тута базар, воздух сотрясают, а у меня прога горит - числа перемешать не могу... а так как могу - не эффективно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2005, 05:44 |
|
||
|
Рандомизе...
|
|||
|---|---|---|---|
|
#18+
XED2 Карабас Барабас: хорошо, как перемешать? 2 maXmo: посмотрел, хм... не нашёл ничего РЕАЛЬНОГО 2 остальным: блин, развели тута базар, воздух сотрясают, а у меня прога горит - числа перемешать не могу... а так как могу - не эффективно... Сделай совсем примитивно через перемешивание, если горит. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2005, 09:37 |
|
||
|
Рандомизе...
|
|||
|---|---|---|---|
|
#18+
2 Землекоп: подобная идея была, но откуда уверенность в КАЧЕСТВЕННОМ перемешивании? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 03:03 |
|
||
|
Рандомизе...
|
|||
|---|---|---|---|
|
#18+
XEDоткуда уверенность в КАЧЕСТВЕННОМ перемешивании? помешай подольше - будет качественнее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 07:19 |
|
||
|
Рандомизе...
|
|||
|---|---|---|---|
|
#18+
Оффтоп но все таки МК-61 - понятно, хорошая вещь до сих пор где то валяется. А как правильно БЗ-34 ( бэ три - 34 ) или БЗ-34 ( бэ-зэ - 34 ) меня этот вопрос гложет класса с 5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 07:42 |
|
||
|
Рандомизе...
|
|||
|---|---|---|---|
|
#18+
XED2 Землекоп: подобная идея была, но откуда уверенность в КАЧЕСТВЕННОМ перемешивании? Виноват. Должно быть 2*n. Тогда равномерно перемешается. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 09:34 |
|
||
|
Рандомизе...
|
|||
|---|---|---|---|
|
#18+
Пасиб, так действительно лучше... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 02:11 |
|
||
|
Рандомизе...
|
|||
|---|---|---|---|
|
#18+
Землекоп Ggg_oldпо полю 10x10 По биту на поле - это всего сто бит. Какая была разрядность регистра? Если 32 бита, то 3-х регистров хватит. В этих калькуляторах использовалась двоично-десятичная арифметика, так что понятия "бит" там просто не было (биты конечно были, но не были программно доступными), там были десятичные разряды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 08:54 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33093802&tid=2033189]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 204ms |
| total: | 385ms |

| 0 / 0 |
