1 Востаннє редагувалося did_pedro (10.03.2014 23:27:06)

Тема: Random

Маємо 6 рандомних чисел, які не можуть повторюватися (множина чисел від 0 до 50). Але чомусь щоразу видають однакові числа (41 17 34 0 19 24).
Код:

int a[6];
for (int j=0;j<6;j++){
    if (j-1<0){a[j-1]=-1;}
        if (j-2<0){a[j-2]=-1;}
            if (j-3<0){a[j-3]=-1;}
                if (j-4<0){a[j-4]=-1;}
                    if (j-5<0){a[j-5]=-1;}
a[j]= rand() % 50;
    if ((a[j]==a[j-1]) || (a[j]==a[j-2]) || (a[j]==a[j-3]) ||(a[j]==a[j-4]) || (a[j]==a[j-5]))
        {j=j-1;}}

Заздалегіть дякую за будь-яку допомогу.

2

Re: Random

Рандомізуйте, srand

більше тут

3 Востаннє редагувалося koala (11.03.2014 10:43:12)

Re: Random

Уточню: rand завжди видає одну й ту саму послідовність з певного місця (тому це не випадкові, а псевдовипадкові числа). Щоб цю послідовність (точніше, місце в ній) змінити, треба встановити початкове значення за допомогою srand. Наприклад,

srand((unsigned)time(0));

встановить початкове значення в значення поточного часу, а воно залежить від дій користувача і змінюється раз від разу.
Ну і алгоритм страшний ви вибрали, взагалі не знаю, як воно працюватиме - за межі масиву вилазить. А треба створити масив можливих значень (50), витягати з нього випадкові числа, переставляти на їхнє місце останнє число і зменшувати масив.