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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 149, средняя оценка - 4.63
Apmyp /7
3 / 3 / 0
Регистрация: 14.10.2009
Сообщений: 76
#1

Как указать диапазон генерации случайных чисел? - C++

10.06.2010, 18:13. Просмотров 28528. Ответов 25
Метки нет (Все метки)

Возник довольно глупый вопрос,как указать диапазон генерации случайных чисел в C++...
int a=random(10); - тут генерируются числа от 1 до 9, а как сделать к примеру генерацию чисел от
[-15,20]?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2010, 18:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как указать диапазон генерации случайных чисел? (C++):

Как задать диапазон случайных чисел? - C++
Мне дана формула для диапазона случайных чисел - 10i + 20, где i мой вариант. Так вот, мой вариант 20, но как задать диапазон. Пробывал...

Функция генерации случайных чисел - C++
Здравствуйте, возник такой вопрос: мне нужно определить генерацию случайных чисел в функцию и использовать ее в программе. void...

Пару вопрос по генерации случайных чисел. - C++
Здраствуйте уважаемые мастера с++. 1). Мне надо в конструкторе инициализировать для поля целого типа случайными значениями......

Средства для генерации случайных чисел - C++
В Си было удобно подключить рандомные числа. через randomize(); a=random(10)-5; В Си++ кроме rand() есть способы еще подключить...

Диапазон случайных чисел - C++
Написал программку-угадайку случайного числа. Но возник вопрос. Использую функцию rand() и она все время за случайное держит 41. А мне...

Формула для генерации случайных чисел заданного диапазона - C++
srand(time(NULL)); int massize = 3; int mas; for (int i = 0; i < massize; i++) { for (int b = 0; b < massize; b++) { ...

25
Андрейка
421 / 225 / 27
Регистрация: 25.03.2009
Сообщений: 744
10.06.2010, 18:22 #2
Apmyp /7,
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <ctime>
 
int main()
{
    srand((unsigned int)time(NULL));
    int a = rand() % 101 - 50;
    std::cout << a << std::endl;
    return 0;
}
от -50 до 50 попадёт в a
2
][акер
#define книжный_червь Я
183 / 94 / 6
Регистрация: 30.01.2010
Сообщений: 780
10.06.2010, 18:39 #3
А для простоты можно и функцию написать:
C++
1
2
3
4
5
6
int random(int a,int b)
{
    srand(time(NULL));
    if (a > 0) return a + rand() % (b - a);
    else return a + rand() % (abs(a) + b);
}
0
Apmyp /7
3 / 3 / 0
Регистрация: 14.10.2009
Сообщений: 76
10.06.2010, 18:41  [ТС] #4
хмм, не догнал, как можно это сделать, что бы диапазон был от -15 до 20, тоесть, не от одного отрицательного числа и до другого такогоже, а для конкретного интервала. В с# это делалось просто,
random rr= new Random(); a=rr.Next(-15,20);, вот и интересует, как это можно сделать в c++, да притом ещё в визуальной среде..
0
neske
1508 / 875 / 84
Регистрация: 26.03.2010
Сообщений: 2,988
10.06.2010, 18:53 #5
rand()%(разница между границами+1)+левая граница
C++
1
2
// если а-левая граница, b-правая, то:
    rand()%(b-a+1) + a;
6
Ravnodushie
0 / 0 / 0
Регистрация: 18.07.2010
Сообщений: 3
18.07.2010, 14:56 #6
как задать диапазон от 5 млрд до 6 допустим.
0
neske
1508 / 875 / 84
Регистрация: 26.03.2010
Сообщений: 2,988
18.07.2010, 15:07 #7
C++
1
rand ()%4999999995+6;
0
Ravnodushie
0 / 0 / 0
Регистрация: 18.07.2010
Сообщений: 3
18.07.2010, 15:10 #8
Цитата Сообщение от Ravnodushie Посмотреть сообщение
как задать диапазон от 5 млрд до 6 млрд допустим.
я немного недописал
0
CyBOSSeR
Эксперт С++
2307 / 1677 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
18.07.2010, 15:11 #9
Ravnodushie,
C++
1
2
3
4
// Возвращает псевдослучайное число из диапазона [min, max)
int Random(int min, int max) {
  return min + rand() % (max - min);
}
3
Ravnodushie
0 / 0 / 0
Регистрация: 18.07.2010
Сообщений: 3
18.07.2010, 15:24 #10
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Ravnodushie,
C++
1
2
3
4
// Возвращает псевдослучайное число из диапазона [min, max)
int Random(int min, int max) {
  return min + rand() % (max - min);
}
я начинающий, и мне надо забить массив числами рандомными, по заданию от 5млрд до 6 млрд. я так понимаю ты предлагаешь написать собственную функцию? не очень представляю код
0
MikeSoft
Эксперт С++
3802 / 1778 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
18.07.2010, 15:34 #11
Цитата Сообщение от Ravnodushie Посмотреть сообщение
я так понимаю ты предлагаешь написать собственную функцию?
Её за вас уже написали.
0
CyBOSSeR
Эксперт С++
2307 / 1677 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
18.07.2010, 15:35 #12
Цитата Сообщение от Ravnodushie Посмотреть сообщение
не очень представляю код
arr - массив, size - его размер:
C++
1
2
for (int i = 0; i < size; ++i)
  arr[i] = Random(5000000, 6000001);
0
neske
1508 / 875 / 84
Регистрация: 26.03.2010
Сообщений: 2,988
18.07.2010, 15:45 #13
Прошу прощения, показалось что нужно от 6 до 5 млрд.

:
C++
1
rand()%1000000001+5000000000;
0
fasked
Эксперт С++
4963 / 2543 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
19.07.2010, 08:04 #14
Цитата Сообщение от neske Посмотреть сообщение
rand()%1000000001+5000000000;
при учете, что:
C
1
2
/* Maximum value that can be returned by the rand function. */
#define RAND_MAX 0x7fff
максимальным из этой формулы будет значение 5000032767.
1
odip
Эксперт С++
7161 / 3223 / 58
Регистрация: 17.06.2009
Сообщений: 14,164
19.07.2010, 15:21 #15
Ну это очевидно.
Нужно использовать другие генераторы, а не стандартный.
0
19.07.2010, 15:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2010, 15:21
Привет! Вот еще темы с ответами:

Реализовать функцию (или класс) генерации случайных чисел, используя средства из заголовочника random (C++11) - C++
Хотел написать небольшую обертку над stl-вским рандомом. Уж больно он сложный для использования. Застрял на такой простой вещи: class...

Запишите шесть строк, состоящих из двух случайных чисел типа int, которые не больше 10 и трех случайных чисел - C++
Запишите шесть строк, состоящих из двух случайных чисел типа int, которые не больше 10 и трех случайных чисел типа float, что не больше...

Указать диапазон, в котором находится число - C++
Ошибок при построении не выдает, но всё-таки работает некорректно. Когда я ввожу число, которое больше 6000, она мне выдает сообщение о...

Как объявить переменную, как диапазон чисел - C++
Даны 2 числа A и B, оба трёхзначные (от 100 до 999) Как их объявить в начале? int A,B; Ведь A и B могут быть числами (-2 147...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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