2015-02-20 2 views
-1

Очень быстрый вопрос: я должен спросить, почему следующее не будет работать. Я - ранний программист, поэтому я прошу о помощи.Копирование целочисленного значения из одного целого в другое

Я пытаюсь скопировать значение num1gen в целое число ballno1 и вывести его.

Код:

#include <iostream> 
#include <stdlib.h> 


using namespace std; 

int main() 

{ 
int ballno1 = 0; 

srand(time(NULL)); 
int num1gen=(rand()%49+1); 


ballno1 = ballno1 + num1gen; 
cout<<ballno1<<" "; 

} 
+4

«Почему следующее не работает» Что вы подразумеваете под «нерабочим»? И почему вы думаете, что это не так? – Borgleader

+1

Этот код должен работать нормально, но сначала вы должны инициализировать генератор случайных чисел с помощью srand (time (NULL)) – pelya

+0

@pelya Существует 'srand (time (NULL));' в коде уже ... – Borgleader

ответ

-1

Чтобы скопировать num1gen в ballno1 использование ballno1 = num1gen; - очень просто.

PS: num1gen не является «целым числом», а «целочисленной переменной». Целое значение - это значение.

+1

Но не было ничего плохого в исходном коде, даже если он был не самым прямым -форменный путь. Как это может быть ответом? –

+0

Вопрос заключался в «копировании одного целого (переменной) в другое». И исходный код - 'ballno1 = ballno1 + num1gen'. С 'ballno1', инициализированным до 0, результат выглядит одинаково, но целое копируется правильно как побочный эффект - если ballno1 имеет другое значение, назначение будет неверным. – i486

+0

Вопрос в том, почему код всегда возвращал то же значение '0'. Это изменение не должно было повлиять на результат от опубликованного кода * вообще *, поэтому я озадачен тем, как ОП решил, что это был ответ. Постскриптум downvotes не мои, я сохраняю их для ответов, которые абсолютно неверны - этого нет. –

0

Я побежал ваш код, и кажется, что каждый раз, выход функции ранда конгруэнтен 3 с 49. Вы можете получить ожидаемый результат, используя строку:

int num1gen=((rand()%1000)%49+1); 

Конечно, вы можете выбрать любое число, а не точно 1000.

-1

Два вопроса здесь. Во-первых, time(NULL) не меняется очень часто или очень много. Если вы запускаете программу снова и снова, не ожидайте, что она будет меняться каждый раз. Во-вторых, большинство реализаций rand очень тесно связаны с семенем для первого или двух случайных чисел, которые вы извлекаете из них. Вы должны выбросить первую пару вызовов rand, которые вы используете.

Или еще лучше, используйте улучшенные объекты случайных чисел, встроенные в C++ 11. http://en.cppreference.com/w/cpp/numeric/random

+0

Это даже не позволяет удаленно решить вопрос. – Wharbio

+0

@Wharbio, потому что вопрос не имеет смысла - нет никакого способа, чтобы опубликованный код мог генерировать заявленный результат. Это попытка объяснить, почему вы можете видеть один и тот же вывод при запуске этого кода несколько раз, потому что это то, что я собрал, реальным вопросом было чтение между строками. –

Смежные вопросы