John_Norton
@John_Norton
Game developer

Как сделать рандомные числа без повторений?

Я хотел бы сделать рандомные числа без повторений, для начал вот мой код рандома:
Random ran = new Random();
			for (int i = 0; i <= 5; i++)
			{
				int r = ran.Next(11);
				Console.WriteLine(c[r]);
			}

Вот что выдаёт:
квадрат 16
квадрат 10
квадрат 10
квадрат 13
квадрат 17
квадрат 19

Как видно тут есть числа с повторением, что делать?
  • Вопрос задан
  • 89 просмотров
Решения вопроса 1
@cicatrix
было бы большой ошибкой думать
Возможность повторов заложена в самой природе случайности. Ты ведь можешь монетку подбросить двумя решками кверху подряд.
Придётся ручками проверять, было ли уже такое значение или нет.
Вообще, лучше сделай так:
1. Сгенери набор чисел A[0...N], из которых надо будет вытянуть случайным образом значения
2. Получи случайное число R, такое чтобы 0 <= R <= A[N-1]
3. Получи элемент набора A[R] и выброси этот элемент из него. В наборе останется N-1 элементов
4. GOTO 2 пока набор не пустой
Как с набором карт, из которой ты по одной тянешь карты. То есть, случайно ты определяешь не само число, а порядковый номер числа в некоем наборе.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
HemulGM
@HemulGM
Delphi Developer, сис. админ
Запоминать
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы