Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2011, 00:47   #1
genrix
просто
Форумчанин
 
Аватар для genrix
 
Регистрация: 17.02.2011
Сообщений: 405
Вопрос rand() не очень работает

Доброй ночи, клуб программистов! Вот код:

Код:
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <windows.h>

using namespace std;

char s1[256]; 
char *rus(char *s2)
{ AnsiToOem(s2,s1);return s1; }


int main()
{
	int magic;
	int guess;

	magic = rand();

	cout << rus("Введите свой вариант магического числа: ");
	cin >> guess;
	cout << magic;

	if (guess == magic) cout << rus("**правильно**") << '\n';
	system ("PAUSE");
	return 0;
}
Так вот, эта программа должна генерировать случайное число и вставлять в magic. Потом сравниваются guess и magiс, и если пользователь, вводивший свой вариант числа, угадал, то выводится на экран **правильно**.
Но rand() почему-то случайным числом всё время выбирает 41. Запускал программу 5 раз, а там все одно и тоже. Почему?
Не стоит читать свои переписки двухлетней давности...
genrix вне форума Ответить с цитированием
Старый 13.08.2011, 01:06   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

проблема решается включением в код хедера ctime и добавлением строки srand(time(0)) перед вызовом rand
counter вне форума Ответить с цитированием
Старый 13.08.2011, 13:10   #3
Ibanez Wizard
Адский тунеядец
Форумчанин
 
Аватар для Ibanez Wizard
 
Регистрация: 11.06.2010
Сообщений: 164
По умолчанию

Код:
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <windows.h>

using namespace std;

char s1[256]; 
char *rus(char *s2)
{ AnsiToOem(s2,s1);return s1; }


int main()
{
    srand( time( NULL ));
	int magic;
	int guess;

	magic = rand();

	cout << rus("Enter the number: ");
	cin >> guess;
	cout << magic << endl;

	if (guess == magic) cout << rus("**YES**") << '\n';
	system ("PAUSE");
	return 0;
}
P.S. Так же, я посоветовал бы ограничить величину рандомного число. К примеру до тысячи:
Код:
rand() % 1000;

Последний раз редактировалось Ibanez Wizard; 13.08.2011 в 13:12.
Ibanez Wizard вне форума Ответить с цитированием
Старый 13.08.2011, 14:08   #4
genrix
просто
Форумчанин
 
Аватар для genrix
 
Регистрация: 17.02.2011
Сообщений: 405
По умолчанию

Спасибо, помогло!


P.S. Так же, я посоветовал бы ограничить величину рандомного число. К примеру до тысячи:
Код:
Код:
rand() % 1000;
Полезный совет!
Не стоит читать свои переписки двухлетней давности...

Последний раз редактировалось genrix; 13.08.2011 в 14:12.
genrix вне форума Ответить с цитированием
Старый 27.12.2011, 10:58   #5
ASix
Новичок
Джуниор
 
Аватар для ASix
 
Регистрация: 27.12.2011
Сообщений: 1
Хорошо

Цитата:
Сообщение от counter Посмотреть сообщение
проблема решается включением в код хедера ctime и добавлением строки srand(time(0)) перед вызовом rand
Спасибо, мне тоже пригодилось!
ASix вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа почему не работает...буду очень благодарна VIKA1829 Помощь студентам 19 26.02.2011 21:23
rand в c++, Якъ Помощь студентам 3 11.11.2010 17:05
с++ rand Якъ Помощь студентам 4 10.11.2010 22:47
rand в С Jasper92 Общие вопросы C/C++ 1 02.04.2010 16:01