Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Билеты на метро - задача на оптимизацию Пожалуйста, помогите решить задачку! Сразу предупреждаю, что решение с пятью циклами while не проходит по времени, так что не предлагайте его... Билет на одну поездку в метро стоит 15 рублей, билет... https://www.cyberforum.ru/ cpp-beginners/ thread1304598.html Найти треугольник наибольшей площади с вершинами в данных точках C++
Дано натуральное число n. С помощью двумерного действительного числового массива i=1,2; j=1,...,n на плоскости задано n точек так, что x1j, x2j – координаты j-й точки. Найти треугольник наибольшей...
C++ Найти площадь фигуры https://www.cyberforum.ru/ cpp-beginners/ thread1304587.html
Найти площадь фигуры F1=pow(x,2)+1 F2=3-pow(x,2) цикл while. Решение: #include <math.h> #include <stdio.h> #include <windows.h> int main()
C++ Простой калькулятор и калькулятор с парсингом https://www.cyberforum.ru/ cpp-beginners/ thread1304577.html
Ребят я совсем не давно только начал изучать сишку, решил написать простенький калькулятор который работает с 2 числами. Возник вопрос, как сделать так чтобы можно было вводить 2 + 5 - 9... И тд....
C++ Найти наибольший элемент двух массивов и записать единицу в тот ряд и столбец
Найти наибольший элемент двух массивов и записать единицу в тот ряд и столбец где они находятся. Помогите пожалуйста, не могу понять что не правильно в функции "changeArray". Мой код: #include...
C++ Задачи с циклами https://www.cyberforum.ru/ cpp-beginners/ thread1304555.html
Не судите строго... Помогите пожалуйста сделать вот это Напишите задание руками и создайте три различных темы для решения трех разных задач
C++ Вычислить количество столбцов, которые имеют нулевые элементы матрицы и их номера https://www.cyberforum.ru/ cpp-beginners/ thread1304551.html
Вычислить количество столбцов, которые имеют нулевые элементы матрицы и их номера, элементы разместить в памяти динамически. Не могу сделать что бы программа смогла вычислять кол-во столбцов с...
Округляет значение double C++
Всем доброго времени суток. Написал конвертор преобразующие дюймы в футы // Программа для преобразования // дюймов в футы: // Inch = Feet/nRatio // #include <stdio.h> #include <iostream>...
C++ Спортивное программирование: Количество СМСок Нашел интересную задачу по динамическому программированию. Вот ее условие: Раньше, когда у телефонов были кнопки, их клавиатуры выглядели примерно так: (прикрепил фото). Требуется подсчитать,... https://www.cyberforum.ru/ cpp-beginners/ thread1304530.html C++ Как создавать информативные исключения? https://www.cyberforum.ru/ cpp-beginners/ thread1304523.html
как создавать информативные исключения??? нигде не могу найти внятного объяснения :( единственный способ какой я знаю throw std::exception("Exception!"), но он не информативен абсолютно, почему то...
Змейка в консоли: неправильное поведение функции C++
Всем привет! Пишу консольную змейку. Есть класс Snake и метод isSnake(), который работает некорректно (всегда возвращает true). Не могу разобраться, в чем ошибка, и как ее исправить? #include...
C++ Отсортировать методом прямого включения Составить программу. Двумерный динамический массив размером NxM. Отсортировать методом прямого включения элементы стоящие от побочной диагонали. https://www.cyberforum.ru/ cpp-beginners/ thread1304520.html
Вездепух
Эксперт CЭксперт С++
10310 / 5600 / 1530
Регистрация: 18.10.2014
Сообщений: 13,670
19.11.2014, 01:58 0

Сгенерировать случайные числа без повторений - C++ - Ответ 6870402

19.11.2014, 01:58. Показов 1548. Ответов 3
Метки (Все метки)

Лучший ответ Сообщение было отмечено Zver6233 как решение

Решение

Цитата Сообщение от Zver6233 Посмотреть сообщение
Нужно выбрать 8 чисел в диапазоне от 1 до 16 включительно, чтоб они не повторялись.
Для таких небольших чисел идеально подойдет т.наз "алгоритм Кнута":

Итерируем через весь диапазон от 1 до 16. Принимаем решение брать/не брать число с вероятностью 'сколько осталось найти / сколько осталось просмотреть'

C++
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
#include <iostream>
#include <ctime>
using namespace std;
 
int main()
{
  const unsigned RANGE_LO = 1;
  const unsigned RANGE_HI = 16;
  const unsigned N = 8;
 
  srand(time(NULL));
 
  unsigned a[N];
  unsigned i_a = 0;
 
  for (unsigned i = RANGE_LO; i <= RANGE_HI; ++i)
  {
    unsigned n_iterate = RANGE_HI - (i - RANGE_LO); // Осталось просмотреть
    unsigned n_find = N - i_a; // Осталось найти
 
    if (rand() < n_find * (RAND_MAX + 1) / n_iterate)
      // Берем!
      a[i_a++] = i;
  }
 
  for (unsigned i = 0; i < N; ++i)
    cout << a[i] << endl;
}
Такой алгоритм сгенерирует набор случайных не повторяющихся чисел в возрастающем порядке. Если еще нужно, чтобы и порядок был случайным, то числа следует после этого случайно перемешать: https://www.cyberforum.ru/post6823330.html

Вернуться к обсуждению:
Сгенерировать случайные числа без повторений C++
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2014, 01:58
Готовые ответы и решения:

Сгенерировать случайные числа
Ребята, интересует такой вопрос. Ниже представлен кусок кода, который, так сказать, генерирует мат....

Сгенерировать всевозможные перестановки N чисел без повторений
Условие задачи: Сгенерировать всевозможные перестановки N чисел без повторений. (Использовать...

Сгенерировать случайные числа от 1000 до 1112
for (int i = 1; i &lt;= 10; i++) { n = 1000 + rand () % 1112; cout &lt;&lt; n &lt;&lt;...

Как сгенерировать случайные числа в заданном интервале?
как правильно сгенерировать вещественный массив на промежутке mas = (float)(rand()%20001)/50); ...

3
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2014, 01:58
Помогаю со студенческими работами здесь

Сгенерировать случайные числа с плавающей точкой в заданном диапазоне, включающем и отрицательные значения
возникла проблема, не могу решить... раньше когда пользовался функ. ( x + rand() % x ) с целыми...

Задача:Даны числа N и K, найти разбиение числа N на K слагаемых(без повторений)
Помогите решить задачу самыми простыми способами, без сложных операторов и библиотек.

В файле даны повторяющиеся числа. Вывести на экран числа по возрастанию без повторений
Помогите с ошибкой в проге, выводит числа с повторениями :( #include &quot;pch.h&quot; #include...

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

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru