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

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

Войти
Регистрация
Восстановить пароль
 
SeeT
53 / 23 / 2
Регистрация: 12.10.2012
Сообщений: 132
Записей в блоге: 1
#1

Всеми любимый random() - C++

30.08.2013, 21:38. Просмотров 956. Ответов 11
Метки нет (Все метки)

Здравствуйте.
Проблема такая, мне необходимо вызывать рандом в программе несколько раз для генерации новых значений переменных. а именно:
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
29
30
31
32
void RandomFunct()
{
    x=1 + rand() % 100 +1;
    y=1 + rand() % 100 +1;
}
 
                //Cложение
        cout << endl;
        RandomFunct();
        z=x+y;
        cout << x << "+" << y << "=" << z;
 
        // Вычитание
 
        cout << endl;
        RandomFunct();
        z=x-y;
        cout << x << "-" << y << "=" << z;
 
        // Умножение
 
        cout << endl;
        RandomFunct();
        z=x*y;
        cout << x << "*" << y << "=" << z;
 
        // Деление
 
        cout << endl;
        RandomFunct();
        z=z=(double)x/(double)y;
        cout << x << ":" << y << "=" << z;
Т.е. random вызывается 4 раза, и при каждом новом запуске программы, что логично, генерируются одни и теже числа. Можно ли как-то это исправить? И если да, то как? Или тут вообще другим ходом, когда random не придется вызывать 4 раза.
Заранее, спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.08.2013, 21:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Всеми любимый random() (C++):

Random и объекты класса (pseudo random) - C++
Всем привет. Есть класс: typedef unsigned int ui; class Player { private: ui health;

Мой любимый Code::Blocks, не могу скомпилировать программу - C++
Приветствую всех! Это жесть просто, словами не описать.. :ireful: Уже второй день не могу скомпилировать программу в ...

всеми любимые структуры - C++
/*Написать программу, которая выполняет следующие действия: • вводит с клавиатуры данные в массив, состоящий из десяти структур; записи...

Размер объекта со всеми вложениями - C++
Как узнать сколько в оперативной памяти занимает обьект со всеми обьектами которые были в нём инициализированы?

Действия со всеми объектами класса - C++
Есть два класса с рядом данных и методов. Через конструктор одного программа создает кучу объектов. Мне надо чтобы из всех объектов...

Сборка проекта со всеми библиотеками - C++
Всем привет! Мне нужно собрать проект в Microsoft Visual Studio так, чтобы в exe были включены все необходимые библиотеки, чтобы не...

11
Убежденный
Системный программист
Эксперт С++
15633 / 7143 / 1130
Регистрация: 02.05.2013
Сообщений: 11,582
Записей в блоге: 1
Завершенные тесты: 1
30.08.2013, 21:38 #2
srand
0
SeeT
53 / 23 / 2
Регистрация: 12.10.2012
Сообщений: 132
Записей в блоге: 1
30.08.2013, 21:42  [ТС] #3
Я пробовал его использовать, во всех 4х вызовах генерировались уже одни и те же числа.
Т.е. если раньше генерировалось 1, 2, 3, 4 и т.д.
то сейчас просто 1 и 2.
--
или я опять что-то не так делаю :\

C++
1
2
3
4
5
6
7
void RandomFunct()
{
    srand(time(NULL));
    srand(r);
    x=1 + rand() % 100 +1;
    y=1 + rand() % 100 +1;
}
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
30.08.2013, 21:46 #4
Что такое r ? Зачем ты вызываешь srand() два раза?
0
SeeT
53 / 23 / 2
Регистрация: 12.10.2012
Сообщений: 132
Записей в блоге: 1
30.08.2013, 22:18  [ТС] #5
моя глупость. исправил

Добавлено через 18 минут
Но так, а по сути никто не ответил, как постоянно генерировать различные числа. В Visual randomize есть, в codeblocks такого нет. Нашел не помню где здесь на форуме вот это:
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
29
//Randomize.cpp : Defines the entry point for the application.
//
 
#include "stdafx.h"
#include <STDLIB.H>
 
int Randomize(int nMax, bool range);
 
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    // TODO: Place code here.
    char szText[MAX_PATH];
 
    wsprintf(szText,"%d",Randomize(16,TRUE));
    MessageBox(NULL,szText,"Randomize",MB_OK);
 
    return 0;
}
 
int Randomize(int nMax, bool range)
{
    srand(GetTickCount()); int random_integer = (rand()%nMax);
    if(range){random_integer++; return random_integer;}
 
    return random_integer;
}
сейчас прикручу библиотеку stdafx.h и попробую включить

Добавлено через 8 минут
Ошибка: stdafx.h: No such file or directory
гугл не помогает и это не прикручивается
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
30.08.2013, 22:31 #6
Цитата Сообщение от SeeT Посмотреть сообщение
а по сути никто не ответил
По сути тебе никто и не ответит, пока ты сам на вопросы не начнешь отвечать по сути.
Цитата Сообщение от castaway Посмотреть сообщение
Зачем ты вызываешь srand() два раза?
Исправил. Ок. Что осталось?
0
qwe12355
7 / 7 / 0
Регистрация: 26.11.2011
Сообщений: 117
30.08.2013, 22:36 #7
#include "stdafx.h" в книге Струструпа был. Это не ствндартная библиотека.
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
30.08.2013, 23:15 #8
Цитата Сообщение от qwe12355 Посмотреть сообщение
#include "stdafx.h" в книге Струструпа был. Это не ствндартная библиотека.
Чё? У Страуструпа такого не должно было быть. Путаешь с std_lib_facilities.h ?
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.08.2013, 23:56 #9
Цитата Сообщение от SeeT Посмотреть сообщение
Ошибка: stdafx.h: No such file or directory
гугл не помогает и это не прикручивается
А оно надо?
1
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.08.2013, 00:04 #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <ctime>
using namespace std;
 
int main()
{
    srand(time(NULL));
    
    for (int i = 0; i < 10; ++i)
    {
        int x, y;
    
        x = 1 + rand() % 100 + 1;
        y = 1 + rand() % 100 + 1;
 
        cout << x << ' ' << y << endl;
    }
    
    system("pause");
    return 0;
}
1
Миниатюры
Всеми любимый random()  
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.08.2013, 00:21 #11
При следующем запуске.
0
Миниатюры
Всеми любимый random()  
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
31.08.2013, 00:27 #12
Возможно, ТС получает не одинаковую последовательность чисел, а одинаковые числа (даже если использовать srand). Можно попробовать использовать библиотеку random из C++11, либо почитать здесь дополнительную информацию Генерация массива целых случайных чисел, которые не повторяются
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2013, 00:27
Привет! Вот еще темы с ответами:

Задачник по C++ со всеми уровнями сложности - C++
подскажите задачник по с++ со всеми уровнями сложности

нужнен файл со всеми словами - C++
пишу программу головоломку, суть такова: есть набор букв, из них надо скласть максимально возможное количество слов, так вот скиньте у кого...

random - C++
Доброго времени суток! Вопрос прост: для генерации случайных чисел всегда пользовался rand(), но тут что то вдруг добрался до random(), но...

Random - C++
для чего пишем srand(time(0)); ? srand(time(0)); int a = rand() % N;


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

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

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