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

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

Войти
Регистрация
Восстановить пароль
 
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
#1

Рандом rand - C++

01.08.2013, 14:36. Просмотров 840. Ответов 11
Метки нет (Все метки)

Решаю задачу из одной книги, так там нужно чтоб пользователю выбивало число (номер счета), не обязательно рандомное, но я решил что лучше сделать рандом
Написал вот так:
C++
1
int number_us = rand() % 100; // % 100 делаю для того чтоб число было не больше 100 :)
Но когда запускаю прогу она постоянно выбивает одно и то же число (41)
Подскажите, как это исправить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2013, 14:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Рандом rand (C++):

Rand - рандом не повторяющихся чисел - C++
Добрый вечер.Подскажите пожалуйста как сделать что бы рандомные числа не повторялись ? Понимаю что во внутрь надо положить цикл от 0 до...

rand() - C++
генератор случайных чисел rand() подскажите пожелуста как работает ета штука. что означает %200, %200-100. какой принцип роботы

rand - C++
всем привет) что означает вот это строка double value = (rand()%1000)/100.0 - 5.0; и чем она отличается от этой double value =...

rand - C++
#include "stdafx.h" #include <iostream> #include <conio.h> #include <cstdlib> // гениратор случайных чисел using namespace std; ...

rand()%(-20)%(20); - C++
Нужно сорт случ числа от -20 до 20 Делаю так rand()%(-20)%(20); получаю числа от 0 до 20, а мне нужно от -20 ;

Rand() - C++
Ребята срочно nомогите , как сгенерировать с nомощью функции rand() рандомные числа 0 или 1 ?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Valentina
68 / 68 / 3
Регистрация: 13.05.2012
Сообщений: 130
01.08.2013, 14:38 #2
Цитата Сообщение от Даниил Посмотреть сообщение
Подскажите, как это исправить?
C++
1
2
#include <stdlib.h>  
 srand (time(NULL));
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
01.08.2013, 14:39  [ТС] #3
Можно пример на моей же программе?
C++
1
2
3
4
5
6
int main() {
srand ( time ( NULL ) );
int us;
cout << us;
return 0;
}
Т.е. все числа будут рандомными?
Или как ?
Valentina
68 / 68 / 3
Регистрация: 13.05.2012
Сообщений: 130
01.08.2013, 14:42 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <stdlib.h>     /* srand, rand */
#include <time.h>       /* time */
using namespace std;
int main(){
 
srand ( time ( NULL ) );
int us;
us=rand()%100;
cout << us;
 
    system("pause");
    return 0;
}
Croessmah
Модератор
Эксперт CЭксперт С++
13132 / 7395 / 828
Регистрация: 27.09.2012
Сообщений: 18,222
Записей в блоге: 3
Завершенные тесты: 1
01.08.2013, 14:42 #5
Цитата Сообщение от Даниил Посмотреть сообщение
Т.е. все числа будут рандомными?
Псевдорандомными
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int main() {
   srand ( time ( NULL ) ) ;
   int us = rand ( ) % 100 ;
   std::cout << us;
}
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
01.08.2013, 14:43  [ТС] #6
Спасибо, работает!
h_wolf
9 / 9 / 1
Регистрация: 24.01.2013
Сообщений: 212
01.08.2013, 14:44 #7
Пусть более опытные меня поправят если не прав но надо вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <ctime>
#include <cstdlib>
 
using namespace std;
 
int main()
{
    int i=0;
    srand(time(NULL));
    i=rand();
    cout<<i;
 
    return 0;
}
Croessmah
01.08.2013, 14:45
  #8

Не по теме:

Цитата Сообщение от h_wolf Посмотреть сообщение
но надо вот так
а в чем, собственно отличие?

h_wolf
01.08.2013, 14:47
  #9

Не по теме:


Отличия нет, надо было просто страницу обновить перед постингом

Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
01.08.2013, 14:52  [ТС] #10
Сорри что 2 вопроса в одной теме, но есть ещё одно, смотрите, допустим я выдал пользователю номер его счёта, далее нужно чтоб он сохранился в .txt файле, и при следующем входе номер считывался и пользователь мог пользоваться своим счётом
Как записать номер в файл я знаю, а вот как сделать чтоб
при следующем входе номер считывался и пользователь мог пользоваться своим счётом
не знаю
Есть мысль:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <fstream> 
using namespace std;
 
int main() {
   srand ( time ( NULL ) ) ;
   int us = rand ( ) % 100 ;
   cout << us;
   ofstream write_file (number.txt);
   write_file << us;
}
Но есть ошибки
Valentina
68 / 68 / 3
Регистрация: 13.05.2012
Сообщений: 130
01.08.2013, 14:56 #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <stdlib.h>     /* srand, rand */
#include <time.h>       /* time */
#include<fstream>
using namespace std;
int main(){
 
srand ( time ( NULL ) ) ;
   int us = rand ( ) % 100 ;
   cout << us;
   ofstream write_file ("number.txt");
   write_file << us;
    system("pause");
    return 0;
}
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
01.08.2013, 15:36  [ТС] #12
Ахах, только что хотел написать что реализовал запись в файл, и тот же код
А можно сделать так чтоб при следующем входе был тот же номер счёта?
Или это трудно?
Если трудно то не нужно, буду так

Добавлено через 38 минут
С задачей немного проморочился, просто не дочитал всю задачу
Но слава Богу что я посмотрел ещё раз на книгу
Вообщем вот решение задачи ( вдруг кому-то понадобится ):

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
33
34
35
36
#include "stdafx.h"
#include <iostream>
#include <fstream> 
#include <conio.h>
#include <clocale>
using namespace std;
 
int main() {
    setlocale (0,"");
   int us;
   int n_month;
   cout << "Введите номер счета: ";
   cin >> us;
   cout << "Введи начальный баланс: ";
   cin >> n_month;
   ofstream write_file ("number.txt");
   write_file << us;
   cout << "Сколько денег за месяц израсходовали? ";
   int money;
   cin >> money;
   int predel;
   cout << "Введите предел кредита - ";
   cin >> predel;
   cout << "Введите сумму прихода - ";
   int prixod;
   cin >> prixod;
   int new_balanc = n_month + money - prixod;
   if (new_balanc > predel) {
       cout << "Счет: " << us << endl << "Предел кредита: " << predel << endl << "Новый баланс: " << new_balanc << endl << "Предел кредита превышен!" << endl;
   }
   else if (predel > new_balanc) {
       cout << "Новый баланс: " << new_balanc << endl;
   }
   getch();
   return 0;
}
P.S. Задача из книги Дейтела "Как программировать на С++" 5 издание
Всем спасибо за помощь!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2013, 15:36
Привет! Вот еще темы с ответами:

rand от 1 до 16 - C++
Вопрос в том как в функции rand() на c++ задать диапазон чисел от 1 до 16

Rand() - C++
metka: r1=rand()%2; r2=rand()%2; if(r1==a &amp;&amp; r2==b)goto metka; else arr=='O'; Собсно-это кусок кода...

rand() - C++
начал учить си++, наткнулся на такую штуку... Накидал простую программку (консольную) и увидел что датчик случ. чисел выдает нифига...

rand - C++
srand(time(NULL)); int s = rand()%1000 +1; генерирует бред вроде 3,4,7,10,14,19,21,26,29... как сделать чтобы значения были...


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

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

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