Вверх ↑
Этот топик читают: Гость
Ответов: 902
Рейтинг: 27
#1: 2007-05-31 05:35:20 ЛС | профиль | цитата
Компонент:Random генерирует случайные числа,но при этом некоторые из них повторяет.
А как сделать чтоб генерировались цифры от 1 до 20 и не повторялись?
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Гость
Ответов: 17029
Рейтинг: 0
#2: 2007-05-31 05:56:44 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2021-06-19 14:52:46
карма: 0

0
Ответов: 9906
Рейтинг: 351
#3: 2007-05-31 06:15:15 ЛС | профиль | цитата
По разному можно:
1) проверять, и если уже есть, то повторить
2) равномерно перемешать исходную последовательность 1,2,3...20
карма: 9

0
Гость
Ответов: 17029
Рейтинг: 0
#4: 2007-05-31 08:51:18 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2021-06-19 14:52:46
карма: 0

0
Ответов: 902
Рейтинг: 27
#5: 2007-05-31 10:21:36 ЛС | профиль | цитата
Подскажите пожалуйста на примере,как сгенерировать случайные числа от 0 до 19 чтоб они не повторялись.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 9906
Рейтинг: 351
#6: 2007-05-31 10:28:10 ЛС | профиль | цитата
juk писал(а):
А это как?

Это написать программу значит надо, которая делает:
1) Случайное число X в диапазоне 0..19
2) Меняет местами два элемента массива с индексами 0 и X
3) Случайное число X в диапазоне 1..19
4) Меняет местами два элемента массива с индексами 1 и X
5) Случайное число X в диапазоне 2..19
6) Меняет местами два элемента массива с индексами 2 и X
....
37) Случайное число X в диапазоне 18..19
38) Меняет местами два элемента массива с индексами 18 и X
карма: 9

0
Ответов: 902
Рейтинг: 27
#7: 2007-05-31 10:34:07 ЛС | профиль | цитата
Круто!-А сколько компонентов Random понадобится?
Для каждого действия свой или можно обойтись одним?
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Администрация
Ответов: 15295
Рейтинг: 1519
#8: 2007-05-31 10:34:49 ЛС | профиль | цитата
можно немного проще:
- взять массив от 0 до 19
- ввести некоторый паметр качества N
- в цикле N раз подряд генерить два случайных числа i1 и i2
- менять местами элементы исходного массива a[i1] и a[i2]

при N > 30 уже должен получаться приемлемый результат
карма: 27
0
Ответов: 56
Рейтинг: 1
#9: 2007-05-31 10:34:53 ЛС | профиль | цитата
code_1497.txt
карма: 1

0
файлы: 1code_1497.txt [1.4KB] [265]
Ответов: 9906
Рейтинг: 351
#10: 2007-05-31 10:41:46 ЛС | профиль | цитата
Dilma, это некорректное решение.
Статистически
Мое - корректное.
Кстати, если кидать сл.число не в i..N, в 0..N - тоже станет некорректным

Специально ПРОВЕРЯЛ
На форуме где-то даже и схема проверки этой статистики лежит...
карма: 9

0
Ответов: 902
Рейтинг: 27
#11: 2007-05-31 10:46:08 ЛС | профиль | цитата
aaa_gadag,то что надо.
Всем спасибо,буду разбираться.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 9906
Рейтинг: 351
#12: 2007-05-31 10:46:28 ЛС | профиль | цитата
Dilma, глядя на схему aaa_gadag-а, начинаю сомневаться:
может зря мы "антикольцевателей" налепили
карма: 9

0
Ответов: 902
Рейтинг: 27
#13: 2007-05-31 10:54:30 ЛС | профиль | цитата
aaa_gadag, А нельзя ли сделать так,чтоб каждый раз отсчёт начинался с разных цифр,а не с 16?
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 9906
Рейтинг: 351
#14: 2007-05-31 10:57:13 ЛС | профиль | цитата
!Random!
карма: 9

0
Ответов: 56
Рейтинг: 1
#15: 2007-05-31 11:03:05 ЛС | профиль | цитата
code_1503.txt
карма: 1

0
файлы: 1code_1503.txt [1.5KB] [293]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)