Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.69
Toshik_
1 / 1 / 0
Регистрация: 17.08.2013
Сообщений: 91
#1

Рандомные числа - C++

20.09.2013, 14:14. Просмотров 4001. Ответов 20
Метки нет (Все метки)

Здравствуйте форумчанине... Хотелось бы спросить, как сгенирировать случайные числа от 1 до 100000 причем так чтобы не повторяться?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2013, 14:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Рандомные числа (C++):

Рандомные числа - C++
Есть программа, которая считает функцию. На второй таблице значение точности Е должно становиться случайным от 10^-1 до 10^-7 Помогите...

Рандомные числа - C++
Доброго времени суток:) Вот задача:Для каждого из следующих наборов целых чисел напишите единственный оператор ,который будет печатать...

сделать рандомные числа - C++
/* Задан массив Z(m) целых чисел. Если массив является знакочередующимся, то упорядочить его в порядке возрастания модулей, если нет,...

Массив и рандомные числа - C++
Прошу прощения за возможно глупый вопрос но я никак не пойму где ошибка. По непонятным мне причинам rand() % 50; не работает , может я...

Неповторяющиеся рандомные числа - C++
Друзья, Пишу программу для проверки таблицы умножения. В тот момент, когда он должен выдавать пример на решение должен быть рандом...

Вывести из файла рандомные числа - C++
Помогите,не могу понять. Вот у меня есть файл,скажем в нем 30 000 чисел . Мне нужно считать от туда скажем 1000 рандомных чисел и вывести...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Cynacyn
33 / 33 / 0
Регистрация: 02.05.2013
Сообщений: 109
20.09.2013, 14:19 #2
http://www.cplusplus.com/reference/c...rand/?kw=srand

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* srand example */
#include <stdio.h>      /* printf, NULL */
#include <stdlib.h>     /* srand, rand */
#include <time.h>       /* time */
 
int main ()
{
  printf ("First number: %d\n", rand()%100000);
  srand (time(NULL));
  printf ("Random number: %d\n", rand()%100000);
  srand (1);
  printf ("Again the first number: %d\n", rand()%100000);
 
  return 0;
}
чтобы не повторялись, записывать числа в массив и проверять - не попадалось ли число
0
Toshik_
1 / 1 / 0
Регистрация: 17.08.2013
Сообщений: 91
20.09.2013, 14:23  [ТС] #3
Цитата Сообщение от Cynacyn Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* srand example */
#include <stdio.h>      /* printf, NULL */
#include <stdlib.h>     /* srand, rand */
#include <time.h>       /* time */
 
int main ()
{
  printf ("First number: %d\n", rand()%100000);
  srand (time(NULL));
  printf ("Random number: %d\n", rand()%100000);
  srand (1);
  printf ("Again the first number: %d\n", rand()%100000);
 
  return 0;
}
чтобы не повторялись, записывать числа в массив и проверять - не попадалось ли число
Видимо не корректно задал вопрос... Так вот имеется код:
C++
1
2
3
4
5
6
while(a) 
    {
        for(i=0; i<a; i++){
            sum1=W[];
        }
    }
и мне надо чтобы в фрагменте
C++
1
[]
было рандомное число от 1 до 100000 без повторения
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
20.09.2013, 14:24 #4
Цитата Сообщение от Toshik_ Посмотреть сообщение
так чтобы не повторяться
Если нужно последовательность чисел, которые не повторяются, то делают обычно так:
1. поместить числа нужного диапазона в массив (1..N)
2. перемешать массив http://www.cplusplus.com/reference/a...andom_shuffle/
3. выбирать из массива последовательно
1
makashello
7 / 0 / 2
Регистрация: 20.09.2013
Сообщений: 18
20.09.2013, 14:26 #5
#include <cstdlib>
using std::rand;

и генерируешь в скобках число [1+rand%100000], как я понимаю. А если числа повторяются в массиве, то надо проверку написать с помощью циклов все же просто
0
Байт
Эксперт C
16063 / 10332 / 1540
Регистрация: 24.12.2010
Сообщений: 19,478
20.09.2013, 14:55 #6
Заполнить массив случайными неповторяющимися числами
1
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
20.09.2013, 15:35 #7
Ликбез для индивидуалов:
rand() возвращает числа в диапазоне [0;32767]
100000 разных чисел через нее получить нельзя.
1
Cynacyn
33 / 33 / 0
Регистрация: 02.05.2013
Сообщений: 109
20.09.2013, 15:41 #8
Цитата Сообщение от castaway Посмотреть сообщение
Ликбез для индивидуалов:
rand() возвращает числа в диапазоне [0;32767]
100000 разных чисел через нее получить нельзя.
This value is library-dependent, but is guaranteed to be at least 32767 on any standard library implementation.
MSVCE 2010 в stdlib.h:
C++
1
#define RAND_MAX 0x7fff
Соответственное если изменить RAND_MAX, то можно получить числа больше 32767.
0
Байт
Эксперт C
16063 / 10332 / 1540
Регистрация: 24.12.2010
Сообщений: 19,478
20.09.2013, 15:47 #9
Цитата Сообщение от castaway Посмотреть сообщение
rand() возвращает числа в диапазоне [0;32767]
rand возвращает int, а в 32-разрядных системах он значительно больше...

Добавлено через 1 минуту

Не по теме:

Хотя, возможно я и не прав....

0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
20.09.2013, 16:04 #10
Ты можешь изменить RAND_MAX, но на результат вывода функции это не повлияет. Эта константа жестко прописана в libc.
Байт, я не понял что ты хотел этим сказать.
0
lipnev
60 / 60 / 1
Регистрация: 14.09.2013
Сообщений: 145
20.09.2013, 16:13 #11
Toshik_, вот такой вариант
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
#include <ctime>
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main()
{
    srand(time(NULL));
    int koef=100000/RAND_MAX;
    int rest=100000%RAND_MAX;
    long mas[10]={0};
    mas[0]=rand()*(rand()%koef)+rand()%rest;
    for (int i=1; i<10; i++){
        mas[i]=rand()*(rand()%koef)+rand()%rest;
        for (int j=0; j<i-1; j++){
            if (mas[j]==mas[i]){
                i--;
                break;
            }
        }
    }
    for (int i=0; i<10; i++)
        cout<<mas[i]<<" ";
    cout<<endl;
    system("pause");
}
0
makashello
7 / 0 / 2
Регистрация: 20.09.2013
Сообщений: 18
20.09.2013, 16:14 #12
Цитата Сообщение от castaway Посмотреть сообщение
Ликбез для индивидуалов:
rand() возвращает числа в диапазоне [0;32767]
100000 разных чисел через нее получить нельзя.
#define RAND_MAX 0x7fff
900000+rand()%100000;
и смотри что получается
0
Байт
Эксперт C
16063 / 10332 / 1540
Регистрация: 24.12.2010
Сообщений: 19,478
20.09.2013, 16:21 #13
Используйте _lrand, и пусть вас не волнуют этих глупостей
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
20.09.2013, 16:35 #14
Используйте <random> из C++11 тогда уж.
0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
20.09.2013, 21:18 #15
Цитата Сообщение от makashello Посмотреть сообщение
#define RAND_MAX 0x7fff
900000+rand()%100000;
и смотри что получается
Получится диапазон: [900000;932767]
За это тебе здоровый минус. В будущем будь умнее.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2013, 21:18
Привет! Вот еще темы с ответами:

Не получается создавать рандомные числа - C++
Вот мой код программы #include &lt;iostream&gt; #include &lt;stdlib.h&gt; using namespace std; int i; int main() { for(i=0;i&lt;10;i++) ...

Рандомные числа при компиляции - C++
Гуглю уже час, но простого примера не нашел. Как можно сгенерировать рандомное число в таком виде? constexpr some_random_number =...

Баг в коде(псевдо-рандомные числа) - C++
Здраствуйте, суть программы в том чтобы в цикле выдавало определенное количество рандомных значений элементом массива, например если 10...

Выводит рандомные числа при передаче массива в функцию - C++
#include &lt;cstdlib&gt; //подключаем библиотесный модуль для того чтобы заполнить массив рандомными числами #include &lt;iostream&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.09.2013, 21:18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru