2016-02-23 4 views
2

Итак, мое домашнее задание - создать функцию циклирования для печати только четных чисел от 0 до 200. Мне нужно создать 100 случайных и четных чисел (только 10 номеров могут печатать на строку). У меня проблемы с рандомизацией чисел. Это то, что я до сих пор:Как рандомизировать эти цифры?

// Loop from 0 to 200 
for (i = 2, j = 1; i <= 200; i++, j++) 
{ 
    // Print even numbers(divisible by 2) 
    if (i % 2 == 0) 
    { 
     cout << i; 
    } 

    // Create new line after printing 10 numbers 
    if (j == 20) 
    { 
     j = 0; 
     ofs << '\n'; 
    } 
} 
+1

http://en.cppreference.com/w/cpp/numeric/random –

+3

Чтобы отображать только четные числа, почему бы не увеличивать ваш цикл на 2 каждый раз и избегать проверки 'i% 2 == 0'? Чтобы генерировать случайные числа, посмотрите на [std :: uniform_int_distribution] (http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution) имена, которые немного страшны, но код присутствует в примере. Вам действительно нужно создавать случайные числа или просто произвольно изменять порядок чисел, которые у вас есть? –

+0

[this] (http://en.cppreference.com/w/cpp/algorithm/random_shuffle) может быть полезным – sp2danny

ответ

2
#include <stdio.h>  /* printf, scanf, puts, NULL */ 
#include <stdlib.h>  /* srand, rand */ 
#include <time.h>  
int main() 
{ 
    srand (time(NULL)); 
    int even = rand() % 200; 
    if (even % 2 == 0) 
    { 
     cout<<even; 
    } 
} 
1

Вот некоторые быстрый код, который печатает 100 четные числа [0..200] в случайном порядке, не повторяя их:

#define PRIME  7879 /* Some big prime number (>> 100)  */ 
#define NUMS  100  /* Number of values to process   */ 
#define PRINT_GROUP 10  /* Number of values printed on a line */ 

int main() 
{ 
    int number = rand() % NUMS; 
    int i; 
    for (i = 0; i < NUMS; i++) { 
     printf("%d%c", 2*number, (i + 1) % PRINT_GROUP == 0 ? '\n' : ' '); 
     number = (number + PRIME) % NUMS; 
    } 
    return 0; 
} 
0

Apart от этого, ваш код немного не работает. Вот некоторые вещи, которые могут ввести в заблуждение других кодеров (.. в любом случае, если вы чувствуете себя комфортно с вашим стилем, который действительно хорошо)

«для (I = 2, J = 1, я < = 200; я ++, J ++) «2 Переменные немного странные, пытаются использовать только одну переменную. .. Просто сделайте это что-то вроде этого:

int j = 1; 
for (i = 2; i <= 200; i++) { 
j++; 

//Code 

if (j == 20) { 
    j = 0; //etc. 
} 

}

Помимо этого «J» выглядит familliar к «Я», так что может запутать других .. попытаться назвать это «подсчет», это довольно стандартный ,

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